1

我有 2 个带有proxy_pass的文件:

server {
    listen 80;
    server_name www.domain1.fr;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:2368;
        proxy_redirect off;
    }
}

server {
    listen 80;
    server_name www.domain2.fr;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:2369;
        proxy_redirect off;
    }
}

他们都工作正常。

现在,如果我通过另一个域名在针对相同 IP 地址的 DNS 服务器上定义)访问该服务器,例如。www.domain3.fr,而不是 404,我得到了与 www.domain2.fr 相同的结果!

我猜是因为最后一个location /,但是如果域名不一样我怎么能做404错误server_name呢?

4

2 回答 2

1

我已经多次回答了这个问题,我正在考虑找到一种使其通用的方法,以便在有人提出问题时分享它。

如果您想查看它,这是其他答案

您可以在此参考链接上阅读任何人为什么会发生这种情况,如何 nginx 处理请求

简单的答案是一个小的服务器块来防止它

server {
  listen 80 default_server;
  # return a code maybe or do any thing
  return 404;
}

当然在此之后重新加载 nginx 以反映设置。

于 2014-01-29T21:31:27.140 回答
0

好吧,我不得不添加一个新配置:

server {
    listen 80 default_server;
    server_name _;
    access_log off;
    return 404;
}

做一个“包罗万象”的人。
来源:NGINX 多服务器块和反向代理

于 2014-01-29T21:26:21.950 回答