Cuando busco esta URL: http://localhost:8080/foo/%5B-%5D
server ( nc -l 8080
) lo recibe tal cual:
GET /foo/%5B-%5D HTTP/1.1
Sin embargo, cuando proxy esta aplicación a través de nginx (1.1.19):
location /foo {
proxy_pass http://localhost:8080/foo;
}
La misma solicitud enrutada a través del puerto nginx se reenvía con la ruta decodificada:
GET /foo/[-] HTTP/1.1
Los corchetes decodificados en la ruta GET están causando los errores en el servidor de destino ( Estado HTTP 400 - Carácter ilegal en la ruta ... ) cuando llegan sin escapar.
¿Hay alguna manera de deshabilitar la decodificación de URL o codificarla de nuevo para que el servidor de destino obtenga exactamente la misma ruta cuando se enruta a través de nginx? ¿Alguna regla inteligente de reescritura de URL?