Nginx正则配置:屏蔽含porn/xxx等特定站点的图片盗链请求
Nginx 拦截含特定关键词不良站点盗链的配置方案
你原有配置为白名单校验逻辑,仅放行规则内列明的来源,其余请求全部拦截,不符合你「放行绝大多数正常来源、仅拦截含色情关键词的不良站点盗链」的诉求。不需要维护冗长的合法来源列表,直接匹配Referer关键词拦截即可,逻辑更简洁。
配置代码
location ~ .(gif|png|jpeg|jpg|svg)$ { # 不区分大小写匹配Referer域名段的违禁关键词,命中则直接返回403 if ($http_referer ~* "^https?://([^/]*\.)?(porn|xxx)\.[^/]+") { return 403; } }
规则说明
~*代表不区分大小写匹配,可覆盖Porn、PORN、XXX、XxX等各类大小写变体的不良域名- 正则仅匹配Referer的域名部分,不会因为正常站点的路径、参数中偶然出现相同关键词触发误拦截
- 无Referer(用户直接访问图片地址)、Referer被代理/防火墙隐藏、所有域名不含违禁关键词的来源均会正常放行,满足你不限制绝大多数访问的要求
- 需要新增拦截关键词时,直接在括号内用
|分隔追加即可,例如要新增adult、sex关键词,将匹配段改为(porn|xxx|adult|sex)即可
补充说明
Referer字段可被客户端刻意伪造,上述配置可拦截绝大多数普通不良站点的常规盗链。如果需要应对刻意伪造Referer的恶意爬取,还需要配合URL鉴权、CDN防盗链、异常流量限流等机制做进一步防护。
内容的提问来源于stack exchange,提问作者Ryan Smith
相关产品推荐
相关产品推荐

