假设我感兴趣的查询参数是arg1=val1
。 我希望nginx只有当请求的uri是/
并且查询参数arg1
不存在时才添加查询参数。 预期的行为如下图所示:
要求:
/
预计将传递给后端:
/?arg1=val1
要求:
/?arg2=val2
预计将传递给后端:
/?arg1=val1&arg2=val2
要求:
/path1
预计将传递给后端(如果所请求的URI不是,则不要添加参数):
/path1
要求:
/?arg1=valx&arg2=val2
预计将传递给后端(如果参数已经存在,请不要更改其值):
/?arg1=valx&arg2=val2
我在nginx.conf
试过的东西如下:
location / { if ($args !~ ^(.*)(arg1=)(.*)$) { rewrite ^(/)$ /?arg1=val1 last; } ...... }
而且它不像预期的那样工作。
我应该如何configurationnginx
来实现预期的行为?
只匹配/ use =。 尝试
location = / { if ($args = "") { set $args arg1=val1; # or rewrite / /?arg1=val1 last; } if ($args !~ "arg1=") { set $args $args&arg1=val1; } }
你可以得到debugging输出,告诉你nginx如何处理你的指令,通过放入你的服务器{}块:
error_log /var/log/nginx/error.log debug;