2013-05-31 94 views
4

如果我有一個域,例如,http://www.example.com,並且我想將所有請求從http://www.example.com/test重定向到http://www.example.com:3000,我該如何執行它正確嗎?
我已經試過如下:Nginx - 將www.example.com/test重定向到www.example.com:3000/

location /test { 
    proxy_pass http://www.example.com:3000; 
    proxy_set_header Host $host; 
} 

但它的作用實際上是重定向到http://www.example.com/testhttp://www.example.com:3000/test,這不是我想要的。
我該如何正確地做到這一點?

UPDATE:
雖然Krizna的答覆工作,它重定向我到我的域名如預期。
但我現在想要的是我的瀏覽器欄是http://www.example.com/test而不是http://www.example.com:3000。如果我理解正確,我應該設置nginx來捕獲響應並通過用戶請求的url發回。我該如何執行它?

回答

4

試試這個代碼

location/{ 
    rewrite ^/test(/.*)$ http://example.com:3000$1 permanent; 
    proxy_set_header Host $host; 
} 

更新時間: 如果你不希望重寫URL,試試這個代碼..

server { 
    -------- 
    server_name www.example.com; 
    location /test { 
    proxy_pass http://example.com:3000; 
    } 
} 
+0

謝謝,它的工作。你能檢查更新的答案嗎? – konnigun

+0

檢查我更新的代碼.. – krizna

+0

也包括這一行代理重定向關閉; – krizna

1

proxy_redirect off應該解決您的問題。它會通過但不會更改URI。

文檔:http://wiki.nginx.org/HttpProxyModule#proxy_redirect

location /test { 
    proxy_pass http://example.com:3000; 
    proxy_set_header Host $host; 
    proxy_redirect off; 
} 
+0

由於某種原因沒有工作。 – konnigun

+0

奇怪的是,我在我的服務器中擁有這種配置,並且像魅力一樣工作。 你有不同的服務器配置來偵聽'端口3000'嗎?因爲您正在重定向到相同的網址,但具有不同的端口。 –