Nginx反向代理丢失端口的解决办法 作者: sysit 分类: d 发表于 2017-09-25 290人围观 ### 1. 问题描述 > 在一个反向代理配置过程中,后端6个tomcat应用做负载均衡,nginx提供的访问是“IP地址+端口”的访问。配置文件是这样的: #balancing.conf upstream balancing { ip_hash; server server1:8080; server server2:8080; } server { listen 8000; server_name 10.10.10.11; access_log /var/log/nginx/balancing_access.log; error_log /var/log/nginx/balancing_error.log; location / { proxy_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; proxy_pass http://balancing; } } > 正常访问应该是http://10.10.10.11:8000/index.html能正常返回,但是,在登录跳转后,URL变成了http://10.10.10.11/index.html。 > 为什么在一次跳转之后就丢失了端口号呢? ### 2. 问题的原因 > Nginx默认把80端口传递给后端,没有正确的把8000端口信息传送到后端。 ### 3. 解决办法 > 修改 ``` proxy_set_header Host $host; ``` > 为 ``` proxy_set_header Host $host:$server_port; ``` 如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作! 赞赏支持