У меня такая конфигурация:
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
. Как я могу это сделать?
Попробуй использовать 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;
}
Вы можете использовать директиву 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;
}