有时候需要对一些参数或者请求链接做屏蔽,那么如何屏蔽呢?

假设是根据参数屏蔽,则可以配置:

if ($query_string ~ "/page/.*/page/") {
return 403;
}

假设是根据请求链接屏蔽,则配置为:

location ^~ /abc.php {
return 403;
}

至于location后面的正则等标志的意思:

  • = 开头表示精确匹配
  • ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。以xx开头
  • ~ 开头表示区分大小写的正则匹配 以xx结尾
  • ~* 开头表示不区分大小写的正则匹配 以xx结尾
  • !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
  • / 通用匹配,任何请求都会匹配到

相关参考:
https://stackoverflow.com/questions/49022484/how-to-use-regex-like-page-page-in-nginx-location



Related Posts: Nginx根据参数或者请求链接返回403 :

留言