이 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 상태 400-경로의 잘못된 문자 ... ) 에서 오류를 발생시킵니다 .
URL 디코딩을 비활성화하거나 다시 인코딩하여 대상 서버가 nginx를 통해 라우팅 될 때 정확히 동일한 경로를 얻도록하는 방법이 있습니까? 영리한 URL 다시 쓰기 규칙?