nginx.conf 中的 server_name 似乎被忽略了

Emi*_*nte 14 nginx

我有一个域名,假设 example.com 指向我的服务器。我的 nginx.conf 是:

upstream domain {
    server 127.0.0.1:8002; 
}

server {

    listen 80;
    server_name <example.com>;
    client_max_body_size 10M;
    keepalive_timeout    15;
Run Code Online (Sandbox Code Playgroud)

在开发过程中,我想停用 example.com。我用 替换它<different_name>

server {

    listen 80;
    server_name <different_name>;
    client_max_body_size 10M;
    keepalive_timeout    15;
Run Code Online (Sandbox Code Playgroud)

它按预期工作正常,<different_name>但仍继续响应<example.com>. 我不明白为什么。我希望 nginx 在<example.com>.

当然我也没有忘记以gunicorn和nginx重启服务。

编辑:它可能是建议的重复帖子。在我看来,您提到的帖子中暴露问题的方式令人困惑。连标题都不清楚。“nginx开放反向代理”是什么意思?我试图公开我的问题,该问题具有明确的类似解决方案,牢记它可以/应该是可重用的,并且对每个人都更加明确。

HBr*_*ijn 18

简而言之:通过删除该域的生产域名请求不会被阻止,它们将转到默认服务器。

手册中转述:

Nginx 只测试请求的头字段“Host”来确定请求应该路由到哪个服务器。如果它的值与任何服务器名称都不匹配,或者请求根本不包含此头字段,则 nginx 会将请求路由到默认服务器。除非明确配置default_server了默认服务器是一个。

您可以创建一个最小的默认服务器,返回默认页面或错误消息,例如:

server {
    listen      80 default_server;
    server_name _ ;
    return 503  "No server is currently configured for the requested host." ;
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,不需要 `server_name` 指令。 (2认同)