如何使用 Nginx 匹配 URL 中的字符串

如何使用 Nginx 匹配 URL 中的字符串

我已经使用 Nginx 设置了反向代理,反向代理工作正常,正如预期的那样。我还有另一种情况,我需要使用 proxy_pass 根据匹配字符串重定向 URL。

IE :http://xx.xx.xx.xx:81/crawlers/587dbbf8e4b0b5cea2c4a49e/execute?url=https%3A%2F%2Fwww.massimodutti.com%2Fes%2Fhombre%2Faccesorios%2Fbolsas-c1748214p7722308.html%3Fkeyword%3DBANDOLERA%2520PEQUE%25C3%2591A%2520PIEL%2520BURTON%26colorId%3D700&token=5892cf1cf056fa9ac307a39c&

如果 URL 包含 massimodutti.de,这就是我想要的其余调用,因此它应该使用 proxy_pass 路由到德国服务器

目前我很空白,正在寻找解决方案,任何帮助都将不胜感激...

答案1

您应该使用 nginx 映射功能将查询参数映射到proxy_pass目标。它的工作原理如下:

在 nginx 配置http级别,添加如下映射:

map $arg_url $proxyserver {
    default default.server;
    "~\.de" german.server;
}

其中,您将其替换default.server为默认服务器的域名和german.server德国服务器的域名。

proxy_pass http://$proxyserver;然后,在您的块中使用server反向代理目标定义。

答案2

我通过在我的 nginx 反向代理配置中添加这些行实现了这一点 $args 是不区分大小写的搜索方法它将在请求的 URL 中搜索“.de”并代理请求。

如果($args〜“ .de”){proxy_passhttp://104.xx.xx.xx:80; }

如果($args〜“ .ca”){proxy_passhttp://104.xx.xx.xx:80; }

相关内容