我在Nginx 1.4.6中看到了这种行为。当我有deny
子句时,return
会覆盖它。我设置了这个简单的例子:
server {
deny all;
location = /test {
return 200;
}
}
它返回200。
我正在寻找(并期待)deny
优先考虑的相反行为。我考虑了if (...) { return 200; }
,但我不确定在if
中要测试什么。如果nginx尝试提供文件而不是仅返回,则deny
按预期工作。
答案 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;
}