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

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

我有一个指向我服务器的域名,比如 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;

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

server {

    listen 80;
    server_name <different_name>;
    client_max_body_size 10M;
    keepalive_timeout    15;

它按预期正常工作<different_name>,但它仍然继续响应<example.com>。我不知道为什么。我希望 nginx 对 完全不响应<example.com>

当然我没有忘记重新启动 gunicorn 和 nginx 等服务。

编辑:这可能是一个重复的帖子,正如建议的那样。在我看来,你提到的帖子中问题暴露的方式很混乱。甚至标题都不清楚。“nginx 开放反向代理”这到底是什么意思?我试图用清晰的术语暴露我的问题,它有一个类似的解决方案,同时记住它可以/应该是可重复使用的,并且对每个人都更加明确。

答案1

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

摘自手动的

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

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

server {
    listen      80 default_server;
    server_name _ ;
    return 503  "No server is currently configured for the requested host." ;
}

相关内容