注意:我已阅读了 SO、ServerFault 等上的几个问答……但似乎没有一个答案有效。
使用基本 nginx (v1.18) 配置运行 AWS ec2 Ubuntu (v20.04) Web 服务器。但是,返回 http 状态代码 200 的location
指令从未被处理和/或被处理并被忽略。/a-custom-path
配置如下:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location /a-custom-path {
access_log off;
add_header Content-Type text/plain;
return 200 'OK';
}
access_log /var/log/nginx/unknown.log;
return 412;
}
永远不会location /a-custom-path
返回 200 状态;它总是返回 412 响应。我尝试了各种位置指令,例如:
location /a-custom-path
location /a-custom-path/
location = /a-custom-path
location = /a-custom-path/
然而,它们都具有相同的响应行为412
。
问题
如何创建返回 200 响应且所有其他请求返回 412 响应的自定义位置路径?
编辑-修订和工作配置
对于其他发现此问题的人来说,这里是基于接受的答案的最终工作解决方案:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
# everything except '/a-custom-path' gets a 412 response
location / {
return 412;
}
location /a-custom-path {
return 200 'OK';
access_log off;
add_header Content-Type text/plain;
}
access_log /var/log/nginx/unknown.log;
}
答案1
returns
因为当你不受任何事物的束缚时,事情就会变得糟糕location {}
。把你的return 412
内心投入location / {}
进去,就会有幸福和快乐。
PS 当您的网络服务器返回空答案时,您应该使用 204 状态,而不是 200。两者都可以工作,但是 204 表示您知道一些事情。