背景
业务部署于Linux虚拟机中,域名解析到公网ip,公网ip的非标准端口映射虚机的标准端口。由于种种原因无法使用公网标准端口(80、443),只能使用非标准端口,公网端口8050到虚机80、公网端口8051到虚机443。
问题复现
虚机内部通过Nginx当做静态资源服务器,监听80、443端口,而在虚机外层还有一个端口转发,但这个端口转发使用的并不是80,导致业务系统登录后重定向地址并没有加上8050端口,而是继续使用了默认的80端口导致了问题的出现。
问题解决
- 创建
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;
- 修改
nginx.conf
配置
nginx.conf
配置server
下的location
引入 proxy_params
文件,nginx重新加载配置使其生效。
location /test/ {
proxy_pass http://localhost:8080/test/;
include proxy_params;
}
此处test为我虚机上的tomcat8080端口下部署的项目名称。