避免nginx在代理\u过程上转义查询参数
我要在域上代理避免nginx在代理\u过程上转义查询参数,nginx,reverse-proxy,Nginx,Reverse Proxy,我要在域上代理/api,我有这个位置块 location ^~ /api/ { rewrite_log on; rewrite ^/api/(.*) /$1$is_args$args break; proxy_pass http://127.0.0.1:1337; } 只要URL没有查询参数,它就可以正常工作,但一旦URL有了查询参数,我就会在上游服务器上出现如下错误找不到路径:/records%3fname=hoegh.io 这里讨论的%3f是一个URL编码的?,由于
/api
,我有这个位置块
location ^~ /api/ {
rewrite_log on;
rewrite ^/api/(.*) /$1$is_args$args break;
proxy_pass http://127.0.0.1:1337;
}
只要URL没有查询参数,它就可以正常工作,但一旦URL有了查询参数,我就会在上游服务器上出现如下错误找不到路径:/records%3fname=hoegh.io
这里讨论的%3f
是一个URL编码的?
,由于它是URL编码的,上游服务器无法识别它。这可能有点迟钝,但我希望能够让nginx正确处理这个问题(即在将URL传递给代理之前不要转义URL)
有什么想法吗?你试过这个吗?通常不需要添加查询字符串,因为Nginx会自动添加查询字符串:
rewrite ^/api/(.*) /$1? break;
你不需要做任何事$args会自动传递 如果要修改传递的$args,必须重写
set $args "foo=bar";
比如说
工作解决方案应如下:
location ^~ /api/ {
rewrite_log on;
rewrite ^/api/(.*) /$1 break;
proxy_pass http://127.0.0.1:1337;
}
我之前确实有过,但后来似乎根本没有传递查询字符串。对不起,我的错。我忘了在重定向字符串的末尾键入
?
,提供的解决方案对您有效吗?请接受我的回答,“弱智”在这里是一个不幸的贬义词。