我正在尝试在nginx
中反向代理,将“ /a/b?page=2
”之类的前端页面重写为对“ /a/b%3fpage=2
”的后端请求
我无法弄清楚如何获得nginx
来进行包含“ %3f
”的反向代理请求。
使用以下配置:
rewrite ^/one$ /a%3fb;
rewrite ^/two$ /a?b;
rewrite ^/three$ /a\?b;
/one
发出类似于GET /a%253fb HTTP/1.0
的后端请求/two
发出类似于GET /a?b HTTP/1.0
的后端请求/three
发出类似于GET /a\?b HTTP/1.0
的后端请求如何获得GET /a%3fb HTTP/1.0
之类的后端请求?
答案 0 :(得分:1)
由于@Richard Smith的评论,我能够使用以下代码针对我的特定情况解决此问题:
location / {
set $backend_uri $request_uri;
if ($args ~* "page=(\d+)") {
set $page $1;
set $backend_uri $uri%3fpage=$1;
}
proxy_pass http://example.com$backend_uri;
}
我认为我也可以使用lua
重写指令来执行更常规的操作,但是我无法在Amazon Linux 2计算机上安装mod-lua,请参见https://serverfault.com/questions/961337/how-to-install-nginx-mod-lua-on-amazon-linux-2 < / p>