Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解
? 对于图片来说,A网站,如果想使用B网站的图片,可以直接写上B网站图片的链接地址,或者将B网站的图片通过右键另存为的方式下载到本地,然后在页面上使用。如果B网站不想A网站这么干了,那么B网站可以采取防盗链的措施来干这个工作,结果就是,A网站想请求所需要的资源,通过url的方式,获取的可能不是原来的图片了,出现404或者别的图片替代了。如果通过浏览器直接打开图片url,那么仍然有可能显示404,这就是防盗链。
? 下面我们先进行盗链的操作过程:就是如何做盗链网站——盗取别人(其他服务器)的图片
? 环境部署准备:一台手工编译完好的nginx服务器(Centos7)、一台做盗链的win10虚拟机、一台用作测试的win10-1主机
1.nginx服务器上的nginx服务为开启状态
[ nginx-1.12.2]# netstat -natp | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18676/nginx: master
2.nginx服务器上的站点目录下有0.jpg图片并且将其相对路径写入到index.html文件中
[ html]# ls 0.jpg 50x.html index.html [ html]# vim index.html [ html]# sed -n ‘15p‘ index.html <img src="0.jpg"/>
3.nginx服务器上配置域名解析:参考博客:nginx虚拟主机配置第一个步骤,然后在本地火狐浏览器中验证
[ html]# netstat -natp | grep named tcp 0 0 192.168.68.145:53 0.0.0.0:* LISTEN 72573/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 72573/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 72573/named tcp6 0 0 ::1:53 :::* LISTEN 72573/named tcp6 0 0 ::1:953 :::* LISTEN 72573/named
4.win10和win10-1虚拟机上都将网络dns域名服务器地址设置为nginx服务器的ip地址并且在命令行验证是否正常解析
5.在做盗链的win10虚拟机上进行如下配置:
以上就是模拟盗链配置的过程了。
开始验证盗链是否设置成功
在win10上先进行测试:输入域名也可以
win10的IP地址:
win10-1上进行测试
以上就是盗链配置的操作过程啦!
盗链是可耻的,因为这相当于是"Borrow the chicken to make the egg"了,不仅盗取别人的资源,还占用别人的服务器带宽,从而使自己获益。
因此我们需要对此进行防护,也就是进行防盗链设置,具体操作过程如下:
[ html]# vim /usr/local/nginx/conf/nginx.conf [ html]# sed -n ‘56,61p‘ /usr/local/nginx/conf/nginx.conf location ~*\.(jpg|gif|swf)$ { valid_referers none blocked *.lokott.com lokott.com; if ($invalid_referer ) { rewrite ^/ http://www.lokott.com/error.png; } } [ html]# ls 0.jpg 50x.html error.png index.html [ html]# vim /usr/local/nginx/conf/nginx.conf [ html]# sed -n ‘56,61p‘ /usr/local/nginx/conf/nginx.conf location ~*\.(jpg|gif|swf)$ { valid_referers none blocked *.lokott.com lokott.com; if ($invalid_referer ) { rewrite ^/ http://www.lokott.com/error.png; } } [ html]# vim /etc/init.d/nginx //编写nginx控制脚本 [ html]# cat /etc/init.d/nginx #!/bin/bash # chkconfig: - 99 20 # description: Nginx Service Control Script PROG="/usr/local/nginx/sbin/nginx" PIDF="/usr/local/nginx/logs/nginx.pid" case "$1" in start) $PROG ;; stop) kill -s QUIT $(cat $PIDF) ;; restart) $0 stop $0 start ;; reload) kill -s HUP $(cat $PIDF) ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac exit 0 [ html]# service nginx stop [ html]# service nginx start
在原本的盗链虚拟机win10上进行测试:
这样我们就完成了防盗链的配置
小结
? 我们通过三台虚拟机进行盗链的配置的操作过程,然后进行防盗链的配置——在主配置文件中添加控制语句来阻止其他主机的盗链行为,从而优化自己的服务器,也使自己的服务器更加安全。