这两天网站访问速度变慢,查看nginx日志会有很多的大量请求带有可疑的referer,这些referer经过访问后都是短信平台,然后进行调用了我们网站的验证码接口 查看nginx日志
Nginx-利用Referer防盗链 语法:
代码语言:javascript复制1、ngx_http_referer_module模块:
用来阻止Referer首部无有效值的请求访问,可防止盗链
2、valid_referers none|blocked|server_names|string ...;
定义referer首部的合法可用值,不能匹配的将是非法值
none:请求报文首部没有referer首部
blocked:请求报文有referer首部,但无有效值
server_names:referer首部中包含本主机名
arbitrary_string:任意字符串,但可使用*作通配符
regular expression:被指定的正则表达式模式匹配到的字符串,要使用~开头,例如: ~.*.baidu.com
示例:
代码语言:javascript复制server {
listen 80;
server_name XX.XX.XX.XX;
location / {
XXX
XXXX
XXX
valid_referers none blocked server_names *.XXX.com; #写入允许的referers
if ($invalid_referer) {
#盗链时返回403
return 403;
}
}
代码语言:javascript复制vim test.conf
server {
listen 443 ssl;
listen 80 ;
server_name www.magedu.org;
root /data/ssl;
ssl_certificate /etc/nginx/conf.d/ssl/magedu.org.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl/magedu.org.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
valid_referers none block server_names *.magedu.org ~.google. ~.baidu.;
if ($invalid_referer) {
return 403 "Forbidden Access";
}
开启之后进行检查并重启nginx
代码语言:javascript复制nginx -t
nginx -s reload
查看nginx日志可疑的网站已经被拦截状态403
友情提示: 在写入允许的valid_referers的时候记得把可信的网址写进去,避免有的用户通过百度、搜狗、360以及其他正规平台进行搜索后进行点击无法访问 举例:
代码语言:javascript复制valid_referers none blocked server_names *.sogou.com *.so.com *.baidu.com;