nginx - 两次反向代理后转向失效
怪我咯
怪我咯 2017-05-16 17:24:31
[Linux讨论组]

在内网有一台服务器,有3个端口提供Web服务,服务器分别是nginx,apache和serv-u。现在需要把三个服务转发到外网。

  • 没有控制路由器的权限
  • 网管只用PortTunnel把80端口转发到外网882

于是就想合并到一个端口转发,使用nginx反代判断Host解决。
nginx.conf如下:

server {
    listen       80;
    server_name  no1.home s1.abc.com;
    index index.html index.htm index.php;      
    access_log off;
    location / {
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-HappyHome  XMWZWX;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://10.110.39.2:10;    
    }
}

三段代码分别反代三项。用Host解析后是正常的,但是一旦用上网管设置的外网就会出现问题:

访问 http://xxx.com:882/folder 后
会自动跳转至http://xxx.com:80/folder/

请问是哪里的问题?是nginx.conf配置错误了吗?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
ringa_lee

好吧,我翻半天nginx的文档后找到了答案。
在三个站点的配置里面都加一句
proxy_redirect "http://10.110.39.2:80" "http://$host:882" ;
就可以了。

ringa_lee

所贴出的配置文件看不到问题所在。所以只能给出如下建议(按顺序来):

  1. 打开 access_log, 确认访问http://xxx.com:882的请求确实已经被该nginx处理。建议查看全局的log,而不是针对此 virtual server 所配置的日志,这样用来排除由于配置错误,请求被其他 virtual server 处理的问题。
  2. 如果[1]得到确认,则如法炮制确认 http://10.110.39.2:10 是否收到请求。
  3. 如果[2]也得到了确认,那么这个时候,请对监听 10.110.39.2:10 的应用程序进行 debug。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号