2017-07-28 549 views
0

我在Nginx上遇到了麻煩。 Nginx代理像這樣接收urlencoded URI。如何使用Nginx代理禁用urlencoding

GET /X/Y/Z.aspx?id=abc%3D%3D 

而且,我注意到,Nginx的適用再次URL編碼,使URI這樣。

GET /X/Y/Z.aspx?id=abc%253D%253D 

我該如何禁用Nginx來應用這樣的urlencoding?我想按原樣傳輸URI。

有沒有辦法修改請求的uri?

據Nginx的文檔,它說..

$request_uri 
full original request URI (with arguments) 

所以,我指定的proxy_pass像下面。

proxy_pass http://x.x.x.x$request_uri; 

Nginx仍然發送請求如下。

GET /X/Y/Z.aspx?id=abc%253D%253D 

Nginx似乎在發送消息時應用了url編碼。那麼,我可以讓Nginx在收到請求時解碼請求嗎?然後,Nginx會在發送時自動對其進行編碼,這意味着它以如下所示的預期參數結束。

GET /X/Y/Z.aspx?id=abc%3D%3D 
+0

實際上,這對Nginx來說不是問題。我在Nginx之前實際上已經有了另一個代理,並且正在引發這個問題。 Nginx只是傳遞從這個代理傳遞的消息。所以,至少應該關閉這種情況。以這樣的結果爲我的帖子道歉。 –

回答

0

不要在proxy_pass使用$request_uri,因爲它一直沒有URL解碼。如果你想構建一個包含查詢字符串的URI,請使用:

$uri$is_args$args