做项目时,需要通过nginx反向代理实现外网访问内网测需求,配置完https的监听端口443,转发没有问题,但是配置其他端口后,转发就不正常,查看原因,发现HttpServletRequest.getServerPort()只能获取443,无法获取真实的端口信息。查阅资料,发现是nginx端口丢失导致,Nginx没有正确的吧端口信息传送到后端,没能正确的配置nginx。解决方案如下:
如配置nginx端口监听8888端口:
server {
listen 8888;
server_name localhost;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
proxy_set_header Host $host:$server_port; 这一行是关键,红色部分必须设置。