Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

aolishuai 2019-12-25

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

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

4.win10和win10-1虚拟机上都将网络dns域名服务器地址设置为nginx服务器的ip地址并且在命令行验证是否正常解析

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

5.在做盗链的win10虚拟机上进行如下配置:

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

以上就是模拟盗链配置的过程了。

开始验证盗链是否设置成功

在win10上先进行测试:输入域名也可以

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

win10的IP地址:

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

win10-1上进行测试

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

以上就是盗链配置的操作过程啦!

盗链是可耻的,因为这相当于是"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上进行测试:

Nginx防盗链配置实例——从盗链模拟到防盗链设置流程细解

这样我们就完成了防盗链的配置

小结

? 我们通过三台虚拟机进行盗链的配置的操作过程,然后进行防盗链的配置——在主配置文件中添加控制语句来阻止其他主机的盗链行为,从而优化自己的服务器,也使自己的服务器更加安全。

相关推荐