Nginx防盗链
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
首先模拟环境
server1:172.25.80.1为被盗链的服务器,上面有要盗的图片
server2: 172.25.80.2为要访问的盗链服务器
1.模拟盗链
1.server2作为web服务器盗链server1的资源
[[email protected] nginx]# vim conf/nginx.conf
116 server {
117 listen 80;
118 server_name daolian.westos.com;
119 charset utf-8;
120 location / {
121 root /web;
122 index index.html;
123 }
124 }
[[email protected] nginx]# sbin/nginx -s reload
[[email protected] nginx]# mkdir /web
[[email protected] nginx]# vim /web/index.html
<html>
<body>
<br>盗链图片</br>
<img src="http://bbs.westos.com/vim.jpg">
</body>
2.在server1上创建被盗链的资源:
[[email protected] nginx]# vim conf/nginx.conf
137 server {
138 listen 80;
139 server_name bbs.westos.com;
140
141 location / {
142 root /bbs;
143 index index.html;
144 }
145 }
[[email protected] nginx]# sbin/nginx -s reload
[[email protected] nginx]# cp /usr/local/nginx/html/search/vim.jpg /bbs/
[[email protected] nginx]# ls /bbs/
index.html vim.jpg
测试资源
3.测试
在客户端浏览器输入daolian.westos.com,直接访问到server1的图片,完成盗链。
2.防止盗链
在server1上进行配置可以防止盗链,当访问bbs.redhat.org域名下gif,jpg,png,hpeg格式的图片时,返回一个403定向。
[[email protected] nginx]# vim conf/nginx.conf
137 server {
138 listen 80;
139 server_name bbs.westos.com;
140
141 location / {
142 root /bbs;
143 index index.html;
144 }
145
146 location ~* \.(gif|jpg|png|jpeg)$ {
147 root /bbs;
148 valid_referers none block bbs.westos.com; ##如果访问的是bbs.westos.com时,不做禁止
149 if ($invalid_referer) {
150 return 403; ##如果不是我允许的域名访问时会返回403。这里也可以设置重定向到虚拟主机的资源。
151 }
152
153 }
154 }
[[email protected] nginx]# sbin/nginx -s reload
这样就无法盗链图片了。
而当直接访问bbs.westos.com/vim.jpg时是没有问题的