Nginx proxy_pass,定义一个不匹配的情况?

时间:2014-01-29 20:43:39

标签: nginx proxypass

我有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;
    }
}

他们都很好。

现在,如果我通过其他域名转到此服务器在我的DNS服务器上定义,定位相同的IP地址),例如。 www.domain3.fr,而不是404,我得到了与www.domain2.fr相同的结果!

我想这是因为最后一次location /,但如果域名与server_name不同,怎么办404错误?

2 个答案:

答案 0 :(得分:1)

我已经多次回答这个问题,我想找到一种方法让它变得通用,这样我就可以在有问题的时候分享它。

如果您想看一下,其他答案

您可以在此参考链接How nginx processes a request

上阅读任何一项原因

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

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

当然重新加载nginx以反映设置。

答案 1 :(得分:0)

好吧,我必须添加一个新配置:

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

成为“抓住一切” 资料来源:NGINX multiple server blocks with reverse proxy