nginx proxy_pass和URL解码

时间:2015-03-11 19:38:08

标签: nginx

原始网址:/ api / url%2已编码%2F /?with = queryParams

nginx的:

location /api {
    client_max_body_size 2G;
    proxy_pass https://oursite;
}

使用此配置,我可以在通过代理时保留URL编码。如果我在“ourite”之后添加“/”,它将解码URL。

问题:

现在代理后的URL仍然包含“/ api /”。我只需要在保留URL编码部分的情况下删除“/ api /”。

1 个答案:

答案 0 :(得分:12)

  

不久前,有一个相同的问题没有回答。在我看来,你应该知道没有这样奇怪的URL。另一种方法是在子域上使用api。 - Alexey十一月十一日和15日晚上22:58

     

stackoverflow.com/q/28684300/1016033 - Alexey十月十一日十五日15:23

接受了一年的挑战!

    location /api/ {
        rewrite ^ $request_uri;
        rewrite ^/api/(.*) $1 break;
        return 400;
        proxy_pass http://127.0.0.1:82/$uri;
    }

那就是它,伙计们!

Nginx pass_proxy subdirectory without url decoding的详细信息,但即使使用查询字符串也能正常工作:

%  curl "localhost:81/api/url%2Fencoded%2F/?with=queryParams"
/url%2Fencoded%2F/?with=queryParams
%