Lorsque je navigue vers cette URL: http://localhost:8080/foo/%5B-%5D
server ( nc -l 8080
) le reçoit tel quel:
GET /foo/%5B-%5D HTTP/1.1
Cependant, lorsque je proxy cette application via nginx (1.1.19):
location /foo {
proxy_pass http://localhost:8080/foo;
}
La même demande acheminée via le port nginx est transmise avec le chemin décodé:
GET /foo/[-] HTTP/1.1
Les crochets décodés dans le chemin GET sont à l'origine des erreurs sur le serveur cible ( état HTTP 400 - caractère illégal dans le chemin ... ) car ils arrivent sans échappement.
Existe-t-il un moyen de désactiver le décodage d'URL ou de le recoder afin que le serveur cible obtienne exactement le même chemin lorsqu'il est acheminé via nginx? Une règle de réécriture d'URL intelligente?