2013-12-23 90 views
1

我有一個非常簡單的問題,但我是nginx的新手,所以我可能會缺少一些明顯的解決方案。Nginx如何將參數傳遞給代理服務器?

所以我在nginx的定義的位置

/example/$id

我想通過$ id來參數化我的代理服務器上的路線,像這樣

http://server.com/example/$id

這讓我不明在nginx重載的id變量。所以我的問題是我怎麼能從nginx傳遞參數到我的代理服務器。

回答

2

假設所有其他設置都已正確設置,您可以使用正則表達式創建一個位置並將捕獲的變量傳遞給您的代理。

location ~ ^/example/(.+)$ { 
    proxy_pass http://server.com/example/$1; 
} 

如果您$id僅是數字,正則表達式可以更加嚴格

location ~ ^/example/(\d+)$ { 
    proxy_pass http://server.com/example/$1; 
} 

請注意,你不能只用一個變量不首先聲明它。聲明$ id是沒有必要的,它被捕獲在正則表達式的括號內,並傳遞給$1

+0

謝謝。如果我不想使用正則表達式,有什麼辦法將它綁定到一個特定的變量? –

+0

@AkshatJiwanSharma請求被綁定到變量'$ uri'。如果'/ example /'在你的代理和你的位置相同,你可以使用'location/example/{proxy_pass http://server.com$uri; }',但否則我不會看到如何在沒有正則表達式的情況下讀取變量'$ id' – foibs

相關問題