2017-04-04 66 views
0

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

  • 我正在寻找这样做,而无需重定向用户。
  • 参数将在 查询字符串中出现没有特定的顺序。
  • 如果请求包含允许的参数和不允许的参数,则允许的参数为 。

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

  • 查询字符串A = X &乙= Y & C = z是完全没有问题。
  • 查询字符串是?A = X & K =Ĵ& C =ž& B = y,则它会被重写为A = X & C =ž& B = Y(所述 “K” 参数被除去, “K”可以是任何东西)
  • 查询字符串?K = j被完全

去除大部分我发现讨论删除特定的查询参数,或删除整个查询字符串的答案。

回答

0

如果你的白名单是相对较短,则可以构建从头得到的URI是这样的:

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

在这种情况下,一些参数可能是空的,如果不存在的原始请求。 或者您可以使用Lua,njs或perl模块。