我有以下配置:
location ~ ^/((index\.php|robots\.txt|admin|static|uploads|api)(/.*)?)$ {
proxy_set_header Host $http_host;
proxy_pass http://localhost:1337/$1?$args;
}
我想对 进行百分号转义$1
,因此/admin/foo%20bar
例如将转发为/admin/foo%20bar
而不是/admin/foo bar
。我该怎么做?
答案1
尝试使用nginx http_set_misc_module#set_unescape_uri
例如:
location ~ ^/((index\.php|robots\.txt|admin|static|uploads|api)(/.*)?)$ {
set_unescape_uri $1;
proxy_set_header Host $http_host;
proxy_pass http://localhost:1337/$1?$args;
}
答案2
您可以使用 set 指令来保持编码完整,或者您可以说重新编码已解码的 uri。
location ~ ^/((index\.php|robots\.txt|admin|static|uploads|api)(/.*)?)$ {
set $query $1;
proxy_set_header Host $http_host;
proxy_pass http://localhost:1337/$query?$args;
}