Nginx返回优先于拒绝?

时间:2015-12-11 10:35:47

标签: nginx

我在Nginx 1.4.6中看到了这种行为。当我有deny子句时,return会覆盖它。我设置了这个简单的例子:

server {
    deny all;
    location = /test {
        return 200;
    }
}

它返回200。

我正在寻找(并期待)deny优先考虑的相反行为。我考虑了if (...) { return 200; },但我不确定在if中要测试什么。如果nginx尝试提供文件而不是仅返回,则deny按预期工作。

1 个答案:

答案 0 :(得分:1)

也许你有Echo模块。默认情况下,它是在Debian / Ubuntu版本中编译的。在这种情况下,您可以使用echo -n "";代替return 200;

如果您想要没有第三方模块的“纯粹”解决方案,可以使用proxy_pass

location /test {
  proxy_pass http://127.0.0.1:11111;
}

...

server {
  listen 127.0.0.1:11111;
  return 200;
}

try_files

location /test {
  try_files FAKE_NON_EXISTENT @return200;
}

location @return200 {
  return 200;
}