过滤位置(包括 nginx 中的查询)

过滤位置(包括 nginx 中的查询)

这是一个由于特定客户要求而产生的非常丑陋的解决方法。

默认设置:像这样使用 proxy_pass 到后端(我已经删除了无用的项目)

server{
  server_name customer.mysite.com;
  location / {
    proxy_pass http://backend.mysite.com/[customerId];
  }
}

到目前为止一切都很简单,一切都重写,一切都很好。但是,现在的要求是,如果客户没有任何查询参数,我们应该添加一些。

我最初的想法是使用第二条规则进行location = /精确匹配,但文档并没有表明这种方法根本不关心查询参数。

那么,有没有办法在 nginx 中实现我需要的功能,还是我必须寻找其他方法?

答案1

要测试查询字符串是否缺失,您可以$args使用块将变量与空字符串进行比较if。要将此规则仅应用于 URI /,请将其放在location = /块内。

例如:

location / {
    proxy_pass http://backend.example.com/customerId/;
}
location = / {
    if ($args = "") { rewrite ^ /?query=foo last; }
    proxy_pass http://backend.example.com/customerId/;
}

这种警告关于 的使用if

相关内容