本文共 2260 字,大约阅读时间需要 7 分钟。
防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站的图片或某个单独的资源,而不是打开整个页面,这就是盗链,referer就是之前的那个网站域名,正常的referer信息有以下几种
none:请求报文没有referer首部,比如用户直接在浏览器输入域名访问往web网站,就是么有referer信息 blocked:请求报文由referer信息,但无又有效值为空 server_names:referer首部中包含本主机及nginx监听的server_name arbitrary_string:自定义指定字符串,但使用作通配符 regular experssion:被指定的正则表达式模式匹配到的字符串,需要使用~开头,如:~..magedu.com准备2台虚拟服务器,一个域名为www.mylinuxops.com,另一个域名为www.melinuxops.com
1.www.mylinuxops.com配置文件及站点内容[root@localhost www]# vim /apps/nginx/conf/servers/vs.conf server { server_name www.mylinuxops.com; location / { root /data/www; index index.html; }}
站点资源
[root@localhost www]# tree /data/www/data/www├── index.html└── tupian.gif0 directories, 2 files
2.www.melinuxops.com配置文件及站点内容
[root@localhost www]# vim /apps/nginx/conf/servers/vs.conf server { server_name www.melinuxops.com; location / { root /data/www; index index.html; }}
站点资源
[root@localhost ~]# tree /data/www//data/www/└── index.html0 directories, 1 file[root@localhost ~]# cat /data/www/index.html #次为盗链的文件盗链页面 盗链测试
访问www.mylinuxops.com/tupian.gif
访问盗链站点www.melinuxops.com查看日志被盗链站点日志172.20.136.96 - - [01/Jun/2019:10:57:06 +0800] "GET /tupian.gif HTTP/1.1" 200 489620 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"172.20.136.96 - - [01/Jun/2019:10:59:11 +0800] "GET /tupian.gif HTTP/1.1" 200 489620 "http://www.melinuxops.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"#第二条日志为被盗链的日志
基于访问安全考虑,nginx支持通过ngx_http_referer_module模块,检查访问者请求的referer信息是否有效,实现防盗链。
修改www.mylinuxops.com的配置文件
[root@localhost www]# vim /apps/nginx/conf/servers/vs.conf server { server_name www.mylinuxops.com; access_log /apps/nginx/logs/access.log main; location / { root /data/www; index index.html; valid_referers none blocked server_names *.mylinuxops.com mylinuxopx.* ~\.google\.; if ( $invalid_referer ){ return 403; } } location = /favicon.ico { log_not_found off; access_log off; }}
再次访问盗链站点
转载于:https://blog.51cto.com/11886307/2403949