原始网址:/ 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 /”。
答案 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
%