通常,我们使用nginx作为反向代理服务器时,监听端口一般都是80,此时,我们的应用的反向代理配置一般如下:
location ^~ /t2/{
proxy_set_header Host $host;
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_pass http://127.0.0.1:8080/t2/;
proxy_redirect off;
}
以上配置,在监听端口是80时,不会有问题。
如果设置的监听端口不是80,以上配置则会引发问题。
影响的接口主要包括:
request.getRequestURL()
request.getServerPort()
以上两个接口,取得的信息中,端口号将都是80.
解决办法:
将反向代理配置修改成如下(重点红色标注部分):
location ^~ /t2/{
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_pass http://127.0.0.1:8080/t2/;
proxy_redirect off;
}