关于nginx参数proxy_redirect的设置

公司有反向代理需求,并发布到互联网。将内网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;

你可能感兴趣的:(web服务器)