请知悉:本文最近一次更新为 4年 前,文中内容可能已经过时。

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

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

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


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《Nginx根据参数或者请求链接返回403》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌