搜尋

首頁  >  問答  >  主體

nginx - 兩次反向代理後轉向失效

在內網有一台伺服器,有3個連接埠提供Web服務,伺服器分別是nginx,apache和serv-u。現在需要把三個服務轉送到外網。

於是就想合併到一個連接埠轉發,使用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配置錯誤了嗎?

怪我咯怪我咯2751 天前1191

全部回覆(2)我來回復

  • ringa_lee

    ringa_lee2017-05-16 17:26:31

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

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-16 17:26:31

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

    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。

    回覆
    0
  • 取消回覆