nginx 代理不断干扰(重定向?)url

nginx 代理不断干扰(重定向?)url

无论我做什么,Nginx 都会不断破坏我的 URL。我相信这只发生在响应包含重定向时。我相信我已经尝试了 wiki 和 google 上前 20 页左右的所有建议组合,但都无济于事。

我的配置看起来像这样:

upstream tomcat {
    server 10.0.0.1:8080;
}
upstream opsview {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass     http://tomcat/;
        proxy_redirect http://tomcat/ /;
        server_name_in_redirect off;

        proxy_set_header  Host       $host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

我努力了:

  1. 两个上游(它们的行为不同)
  2. 直接传递并重定向到 ip:port,而不是上游
  3. 带或不带尾部斜杠
  4. proxy_redirect 关闭
  5. server_name_in_redirect 关闭或未关闭
  6. 带有和不带有 header 指令

不断出现的错误情况:

  • 如果代理到外部主机,我可能会发现我的浏览器被重定向到http://tomcat/
  • 如果代理到同一主机上的另一个服务,我可能会发现我的浏览器重定向到另一个端口:http://example.com:3000/

我到底做错了什么?

答案1

您应该检查上游Location:在重定向时在 HTTP 标头中真正返回的内容。可能Location:有类似这样的 URLhttp://tomacat.fully.qualified.name/somepath/并且这不会匹配proxy_redirect http://tomcat/ /

相关内容