NGINX限制查询参数

时间:2017-04-04 01:32:28

标签: nginx url-rewriting query-parameters

有没有使用NGINX限制查询参数的简单方法? 我的意思是有一组允许的查询参数(由应用程序使用),应该消除任何其他查询参数。基本上是允许参数的白名单

  • 我希望在不重定向用户的情况下执行此操作。
  • 参数没有特定的顺序出现在 查询字符串。
  • 如果请求包含允许的两个参数和 那些不允许的,那么允许的参数是 保持。

例如:如果我允许参数A,B,C,那么:

  • 查询字符串?A = x& B = y& C = z非常好。
  • 查询字符串是?A = x& K = j& C = z& B = y然后它将被重写为A = x& C = z& B = y(“K”参数被删除, “K”可以是任何东西)
  • 查询字符串?K = j完全删除

我发现的大多数答案都讨论了删除特定查询参数或删除整个查询字符串。

1 个答案:

答案 0 :(得分:0)

如果您的白名单相对较短,您可以从头开始构建生成的URI,如下所示:

location ~ ^/(.*)$ {
  proxy_pass http://backend/$1?A=$arg_a&B=$arg_b&C=$arg_c;
}

在这种情况下,如果原始请求中不存在某些参数,则某些参数可能为空。 或者你可以使用Lua,njs或perl模块。