小编Tom*_*icz的帖子

在 nginx 代理中禁用 URL 解码

当我浏览到这个 URL 时:http://localhost:8080/foo/%5B-%5Dserver ( nc -l 8080) 按原样接收它:

GET /foo/%5B-%5D HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

但是,当我通过 nginx (1.1.19) 代理此应用程序时:

location /foo {
        proxy_pass    http://localhost:8080/foo;
}
Run Code Online (Sandbox Code Playgroud)

通过 nginx 端口路由的相同请求转发路径解码:

GET /foo/[-] HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

GET 路径中的解码方括号导致目标服务器中的错误(HTTP 状态 400 - 路径中的非法字符...),因为它们未转义到达。

有没有办法禁用 URL 解码或将其编码回来,以便目标服务器在通过 nginx 路由时获得完全相同的路径?一些巧妙的 URL 重写规则?

rewrite url nginx

25
推荐指数
2
解决办法
4万
查看次数

标签 统计

nginx ×1

rewrite ×1

url ×1