nginx location 指令不返回 http 状态

nginx location 指令不返回 http 状态

注意:我已阅读了 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 表示您知道一些事情。

相关内容