2012-12-17 46 views
6

我有一個nginx服務器處理PHP請求,但它被配置爲偵聽非標準端口(端口12345或其他)。我不能改變監聽端口,因爲公司IT說「不」。301在代理後面運行非標準端口的nginx機器上的重定向

存在這樣的端口從www.domain.com:80請求轉發到nginx的箱數據中心的代理12345

我有一些靜態301重定向,我需要到位,但我收到意想不到的行爲。

樣品重定向在site.conf「服務器{}」塊:

rewrite ^/foo$ /bar/foo/ permanent; 

當我嘗試去www.domain.com/foo,重定向發生,但它試圖在瀏覽器轉發到www.domain.com:12345/bar/foo/

我的問題是,我怎樣才能讓nginx將用戶重定向到正確的端口(www.domain.com/bar/foo/)?

也許更好的問題是,做什麼我正在問什麼是正確的方法?有50多個重定向需要進入,我寧願不爲每個重定向創建一個「位置」部分。

回答

2

您可以提供更明確的重寫。請嘗試以下操作:

rewrite ^/foo/ $scheme://www.domain.com:80/bar$request_uri permanent; 

我假定你的意思是使用^/foo/代替^/foo$,因爲^/foo$是一個非常特殊的情況。只需根據需要進行修改。

+1

謝謝,凱文。我的確意味着^/foo /因爲它是我定位的特定網址(根據市場營銷請求)。它很好用,我修改了一下: rewrite ^/foo/$ scheme:// $ server_name:80/bar/permanent; – Jason