使用带有代理通行证的Nginx删除部分URL



我正在通过nginx运行一个web应用程序,无论何时出现,我都需要删除部分URL(?debug(,例如:

发件人https://example.com/web?debug#menu=accounts

https://example.com/web?debug#menu=orders

收件人https://example.com/web#menu=accounts

https://example.com/web#menu=orders

我的nginx配置文件有以下位置块:

location / {
proxy_pass      http://example.com;
}

我在网上寻找了实现这一目标的方法,但没有任何效果。我尝试了以下操作,但url按原样传递,没有更改:

location ^~ ?debug# {
if ($request_uri ~* "?debug#(.*)") {
rewrite ^?debug(.*)$ $1 break;
proxy_pass  http://example.com/$1;
}
}
location / {
proxy_pass      http://example.com;
}

如有任何帮助,我们将不胜感激。

我找到了解决问题的方法。这是代码。

location / {
set $test 0;
if ($request_uri ~ "([^?]*)?(.*)debug([^&]*)&?(.*)") {
set $test 1;
}
if ($request_uri ~ "([^?]*)?(.*)debug=files([^&]*)&?(.*)") {
set $test 0;
}
if ($test = 1) {
set $args $2$4;
rewrite "^" $scheme://$host$uri;
}
proxy_pass      http://example.com;
}

从以下链接的答案获得进一步帮助:

Nginx重定向-从URL 中删除特定的查询参数

我怎样才能使用";或";nginx中的运算符";如果";陈述

最新更新