Когда я просматриваю этот URL: http://localhost:8080/foo/%5B-%5D
server ( nc -l 8080
) получает его как есть:
GET /foo/%5B-%5D HTTP/1.1
Однако, когда я прокси это приложение через nginx (1.1.19):
location /foo {
proxy_pass http://localhost:8080/foo;
}
Тот же запрос, перенаправленный через порт nginx, пересылается с декодированным путем:
GET /foo/[-] HTTP/1.1
Декодированные квадратные скобки в пути GET вызывают ошибки на целевом сервере ( HTTP Status 400 - Недопустимый символ в пути ... ), поскольку они поступают без экранирования.
Есть ли способ отключить декодирование URL или закодировать его обратно, чтобы целевой сервер получал точно такой же путь при маршрутизации через nginx? Какое умное правило перезаписи URL?