起因
在搭建公司内部一套业务系统测试环境是由于需要使用到Nginx做反向代理,但是又没有使用80/443端口做外部访问使用。在web端访问API时出现端口丢失的情况,导致业务无法正常访问。
解决方法
在对应的*.conf的location中添加proxy_set_header Host $host:$server_port;
示例:
upstream demoapi {
ip_hash;
server 172.20.0.100:20001;
server 172.20.0.101:20001;
}
server {
listen 10080;
server_name localhost;
location / {
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
# 获取真实客户端IP写入到请求头x-Real-IP
proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header Host $host;
# 获取代理端口
proxy_set_header Host $host:$server_port;
proxy_redirect off;
proxy_pass http://demoapi;
proxy_http_version 1.1;
}
}