2017-10-13 67 views
3

我有一個職位服務器偵聽端口8081和示例路徑。 我希望能夠將整個URI查詢參數重定向到節點服務。 我該怎麼做。傳遞URI查詢參數nginx反向代理

例如,我想下面的POST請求的URL http://exmaple.com/foo/bar?bla=1傳遞給http://example.com:8081/foo/bar?bla=1

它看起來非常簡單和直接的例子,但只是無法得到它的工作,任何IDE?

location ^~ /foo/bar { 

       rewrite_log on; 
       rewrite ^/foo/bar(.*) /$1 break; 
       proxy_pass http://example.com:8081/foo/bar;     
     } 

回答

2

默認proxy_pass不會改變請求URI(包括查詢字符串)。在你的問題的例子說明兩種方式其中URI可以之前被上游發送被改變 - 通過附加的可選URI到proxy_pass聲明(見this document)或具有rewrite...break聲明(見this document)。

location ^~ /foo/bar { 
    proxy_pass http://example.com:8081; 
} 
+0

它是否支持POST請求,因爲相關解決方案並沒有爲我工作... – user4860092

+1

如果你刪除這兩個,該URI將上游不受干擾,並與查詢字符串完好發送POST請求應該透明地傳遞。重新讀取您的問題 - 在POST請求中包含URL編碼參數是很常見的,因爲POST請求包含一個主體。 –

+0

對於這篇文章你是對的,它正在發展中,並且在不久的將來往往會發生變化。首先,我想修復反向代理isuue,我在這裏。我沒有提到,但我認爲它也應該是透明的,服務器包括tls(https) – user4860092