【问题标题】:How can I disable urlencoding with Nginx Proxy如何使用 Nginx 代理禁用 urlencoding
【发布时间】:2018-01-03 22:01:57
【问题描述】:

我在使用 Nginx 时遇到了问题。 Nginx 代理接收这样的 urlencoded URI。

GET /X/Y/Z.aspx?id=abc%3D%3D

而且,我注意到 Nginx 再次应用了 urlencoding,并将 URI 设置为这样。

GET /X/Y/Z.aspx?id=abc%253D%253D

如何禁用 Nginx 以像这样应用 urlencoding?我想按原样传输 URI。

有没有办法修改请求uri?

根据 Nginx 文档,它说..

$request_uri
full original request URI (with arguments) 

所以,我像下面这样指定了 proxy_pass。

proxy_pass http://x.x.x.x$request_uri;

Nginx 仍然发送如下请求。

GET /X/Y/Z.aspx?id=abc%253D%253D

似乎 Nginx 在发送消息时应用了 url 编码。那么,我可以让 Nginx 在收到请求时对其进行解码吗?然后,Nginx 应该在发送时自动对其进行编码,这意味着它以如下预期的参数结束。

GET /X/Y/Z.aspx?id=abc%3D%3D

【问题讨论】:

  • 其实这不是 Nginx 的问题。我实际上在 Nginx 之前有另一个代理,它正在解决这个问题。 Nginx 只是传输从这个代理传递过来的消息。所以,至少,这个案子应该结案。以这样的结果为我的帖子道歉。

标签: nginx


【解决方案1】:

不要在proxy_pass 中使用$request_uri,因为它没有经过url 解码。如果要构造包含查询字符串的 URI,请使用:

$uri$is_args$args

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-05
    • 2014-12-04
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2015-05-22
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多