有时候需要对一些参数或者请求链接做屏蔽,那么如何屏蔽呢?
假设是根据参数屏蔽,则可以配置:
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
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。