nginx 在 url 中全局替换给定的字符

nginx 在 url 中全局替换给定的字符

我有一个传统的后端,它不会将 url 编码解释%2B+url 中的登录,例如

http://10.20.30.40/keyvalues?Name=foo%2Bbar%2Bbaz%2B...
http://10.20.30.40/keyvalues?Name=foo%2Bbaz
http://10.20.30.40/keyvalues?Name=foo

所以我要把它们变成这样的形式:

http://10.20.30.40/keyvalues?Name=foo+bar+baz+...
http://10.20.30.40/keyvalues?Name=foo+baz
http://10.20.30.40/keyvalues?Name=foo

使用 Nginx reverce-proxy。但我猜我ngx_http_rewrite_module的配置不会像在文档中,我目前的规则是:

    location ~ keyvalues {
        rewrite x2B +;
        proxy_pass "$scheme://$http_host";
    }

并且它并没有取代(根据tcpdump和后端的响应来判断)。

替换 url 中的多个字符的正确方法是什么?(就像使用 sed 的's/%2B/+/g'命令一样。)

相关内容