在內網有一台伺服器,有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配置錯誤了嗎?
好吧,我翻半天nginx的文件後找到了答案。
在三個站點的配置裡面都加一句
proxy_redirect "http://10.110.39.2:80" "http://$host:882" ;
就可以了。
所貼出的設定檔看不到問題所在。所以只能給以下建議(依序來):
http://xxx.com:882
的請求確實已經被該nginx處理。建議查看全域的log,而不是針對此 virtual server 所配置的日誌,這樣用來排除由於設定錯誤,請求被其他 virtual server 處理的問題。http://10.110.39.2:10
是否收到請求。10.110.39.2:10
的應用程式進行 debug。