公司有个站被人仿了,直接引用源站资源,因为在某些数据库需要被引用,所以白名单referer规则不太好设,只能暂时将仿站referer屏蔽。
使用nginx的map模块和正则匹配该域名和IP的请求,写成单独的conf文件block_referer.conf
map $http_referer $block_ref_urls { default 0; ~(?i)(^.*xxxx.com.*$) 1; #屏蔽的IP 103.129.97.141 1; }
在主配置nginx.conf中include以上配置,注意需要在http中include,而不是server中include,否则会提示
Nginx: [emerg] "map" directive is not allowed here in xxxx
include block_refer.conf; #注意路径
在对应域名的conf中引用该屏蔽规则
if ($block_ref_urls) {return 403;}
仿站已无法直接referer源站的资源:
但其实这个做法治标不治本,对方直接伪造referer就可以轻松突破,还是得做更深层次的安全措施,比如套cdn,在cdn层面做防盗链,URL鉴权之类的手段,更为安全。