公司有反向代理需求,并发布到互联网。将内网nginx的9012端口发布到互联网58.211.24.24:9004端口。
刚开始这么配置
server {
listen 9012;
server_name xxx.xxx.net;
access_log logs/sales.host.access.log main;
error_log logs/sale_error.log;
error_log logs/sale_error.log notice;
error_log logs/sale_error.log info;
location / {
proxy_buffering off;
proxy_pass http://salesCluster;
proxy_set_header Host $host:9012;
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;
client_max_body_size 60m;
proxy_read_timeout 600s;
proxy_connect_timeout 30s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
从互联网访问,58.211.24.24:9004/index,发现页面加载不了,一片空白。
用chrome浏览器查看后台的访问原地址,发现index页面变成58.211.24.24:9012/index,端口被改变了,变成了nginx的内网地址,问题肯定出在这里。
这里我找到了两种办法解决:
1.用proxy_redirect参数修改被代理服务器返回的响应头。
加一行:proxy_redirect http://58.211.24.24:9012 http://58.211.24.24:9004;
2.直接修改proxy_set_header
将proxy_set_header Host $host:9012; 修改为
proxy_set_header Host $host:9004;