2013-07-29 51 views
0

主機名我想用改寫指令我的網站的每個IP地址重定向到該網站的主機名,也比使用proxy_pass指令訪問該網站在NGINX這樣重定向IP在NGINX

proxy_pass http://host/name ; 

使用NGINX作爲代理可行,但我無法改變我的腳本來重寫地址並同時代理我的請求。我試圖使用Rewrite指令,但我無法找到正確的語法。

回答

0

使用rewrite指令更改主機將導致重定向。這意味着客戶端需要使用新主機發布另一個請求,然後,您可以proxy_pass這個請求。在這種情況下,客戶端(例如瀏覽器)中的URL將會更改,如'http://*.*.*.*:port/uri?request_string' - >'http://host/uri?request_string'。

通常,我們使用rewrite指令來更改將被proxy_passed請求的URI。如果你想改變主機,使用proxy_set_header。舉個例子:

location ~* "^/maishenme/(knowse|knowdetail|iget|ilist|initem|i?compare)(.*)?$" { 
     rewrite "^/maishenme/(.*)?$" /$1 break; 
     proxy_pass http://***.xxx.com; 
     proxy_set_header Host "internal.xxx.com"; 
     break; 
} 

在這種情況下,從客戶端,網址沒有改變,但對於後端服務器,可以打印主機領域,看看它改爲「internal.xxx.com」

+0

能否請您解釋一下這更多的代碼我,我怎麼能與網站 – Hobbit1919

+0

的真實IP和主機名來測試它,如果你能接受一個301或302重定向,使用「重定向」指令,然後proxy_pass.If你想要更改proxy_pass中的主機字段,可以使用proxy_set_header替換它。閱讀手冊並嘗試更多。 – TroyCheng