1

我写了这个/etc/nginx/conf.d/apply.conf并启动了 nginx。

server {
location = /hoge {
    return 200;
}

}

但 curl 命令失败。

curl localhost:80/hoge

它说

<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.13.9</center>
</body>
</html>

日志是

open() "/usr/share/nginx/html/hoge" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /hoge HTTP/1.1", host: "localhost"

我只想返回没有响应正文或响应正文空白的状态代码。

我改变了这个但仍然没有工作。

location /hoge {
return 200 'Wow';
add_header Content-Type text/plain;
}

也试过这个。

location /hoge {
return 200 'Wow';
default_type text/plain;
}
4

1 回答 1

4

没有上下文很难说(整个 nginx 配置文件的样子),因为nginx 如何处理请求

如下所示的配置文件应该可以很好地满足您的需求:

  server {
    listen 80;

    location /hoge {
      return 200;
    }

  }

但是,如果您的配置文件有其他位置块(特别是如果它们是基于正则表达式的),那么您可能无法获得预期的解决方案。以这个配置文件为例:

  server {
    listen 80;

    location /hoge {
      return 200;
    }

    location ~* /ho {
      return 418;
    }

  }

发送请求curl localhost:80/hoge将返回 http 状态代码 418 而不是 200。这是因为正则表达式位置在确切位置之前匹配。

所以,长答案是;如果没有您正在使用的整个 nginx conf 文件的上下文,很难判断。但是了解nginx 如何处理请求会让你得到答案。

于 2018-04-18T10:43:11.560 回答