Quando eu navego para este URL: http://localhost:8080/foo/%5B-%5D
server ( nc -l 8080
) recebe como está:
GET /foo/%5B-%5D HTTP/1.1
No entanto, quando eu proxy esse aplicativo via nginx (1.1.19):
location /foo {
proxy_pass http://localhost:8080/foo;
}
A mesma solicitação roteada pela porta nginx é encaminhada com o caminho decodificado:
GET /foo/[-] HTTP/1.1
Os colchetes decodificados no caminho GET estão causando os erros no servidor de destino ( HTTP Status 400 - Caractere ilegal no caminho ... ) à medida que chegam sem escape.
Existe uma maneira de desativar a decodificação de URL ou codificá-la de volta para que o servidor de destino obtenha exatamente o mesmo caminho quando roteado pelo nginx? Alguma regra de reescrita inteligente de URL?