Wenn ich zu dieser URL navigiere, empfängt http://localhost:8080/foo/%5B-%5D
server ( nc -l 8080
) sie wie sie ist:
GET /foo/%5B-%5D HTTP/1.1
Wenn ich diese Anwendung jedoch über Nginx (1.1.19) als Proxy verwende:
location /foo {
proxy_pass http://localhost:8080/foo;
}
Dieselbe Anfrage, die über den Nginx-Port weitergeleitet wird, wird mit dekodiertem Pfad weitergeleitet:
GET /foo/[-] HTTP/1.1
Dekodierte eckige Klammern im GET-Pfad verursachen die Fehler auf dem Zielserver ( HTTP-Status 400 - Unzulässiges Zeichen im Pfad ... ), wenn sie ohne Escapezeichen eintreffen.
Gibt es eine Möglichkeit, die URL-Dekodierung zu deaktivieren oder zurück zu kodieren, damit der Zielserver bei der Weiterleitung durch nginx genau denselben Pfad erhält? Eine clevere Regel zum Umschreiben von URLs?