Bootstrap

Nginx处理302重定向端口丢失问题

Nginx处理302重定向端口丢失问题

背景

业务部署于Linux虚拟机中,域名解析到公网ip,公网ip的非标准端口映射虚机的标准端口。由于种种原因无法使用公网标准端口(80、443),只能使用非标准端口,公网端口8050到虚机80、公网端口8051到虚机443。

问题复现

虚机内部通过Nginx当做静态资源服务器,监听80、443端口,而在虚机外层还有一个端口转发,但这个端口转发使用的并不是80,导致业务系统登录后重定向地址并没有加上8050端口,而是继续使用了默认的80端口导致了问题的出现。

问题解决

  1. 创建 proxy_params文件

nginx/conf目录下创建 proxy_params文件,写入如下内容。

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
  1. 修改nginx.conf配置

nginx.conf配置server下的location引入 proxy_params文件,nginx重新加载配置使其生效。

location /test/ {  
            proxy_pass   http://localhost:8080/test/; 
			include proxy_params;
        }

此处test为我虚机上的tomcat8080端口下部署的项目名称。

;