当我浏览到该URL时:http://localhost:8080/foo/%5B-%5D
服务器(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重写规则?