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

标签 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;
    }
}

它们都工作得很好。

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

我猜是因为最后一个 location/,但是如果域名与 server_name 不同,我该如何执行 404 错误?

最佳答案

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

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

您可以在此引用链接 How nginx processes a request 上了解发生这种情况的任何原因。

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

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

当然,之后会重新加载 nginx 以反射(reflect)设置。

关于Nginx proxy_pass,定义不匹配的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21442210/

相关文章:

logging - 是否可以在 Nginx 上指定自定义错误日志格式?

node.js - 请求发送时间过长。为什么会这样?

redirect - 如何仅重定向位于 nginx map 中的 url

ruby-on-rails - 使用 rails、nginx 和 send_file 在 Chrome 中流式传输 mp4

apache2 - ProxyPass 将 304 状态修改为 200 并添加 content-type

apache - 将 httpd ProxyPass 与 DirectoryIndex 结合使用

nginx proxyPass 使用变量传递给普罗米修斯

ssl - Nginx 自签名证书不适用于 Vagrant 虚拟机

apache - 将 Apache ssl 端口 443 转发到 Tomcat http 端口

apache - ProxyPass|ProxyPassMatch 在位置中定义时不能有路径