nginx - 兩次反向代理後轉向失效
怪我咯
怪我咯 2017-05-16 17:24:31
0
2
1146

在內網有一台伺服器,有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)
左手右手慢动作

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

左手右手慢动作

所貼出的設定檔看不到問題所在。所以只能給以下建議(依序來):

  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。
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!