Nginx学习笔记(八)——Nginx的盗链与防盗链

文章目录

一、盗链与防盗链

盗链:指B网站将A网站中的一些资源的链接地址贴到B网站中。常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中。
防盗链: WEB应用防火墙通过实现URL级别的访问控制,对客户端请求进行检测,如果发现图片、文件等资源信息的HTTP请求来自于其它网站,则阻止盗链请求,节省因盗用资源链接而消耗的带宽和性能

主机 角色
server4(172.25.2.4) 盗链服务器
server1(172.25.2.1) 被盗链服务器
真机(172.25.2.250) 客户端

1.1 模拟盗链(server4盗取server1)

1、server4主机(盗链主机)上进行的操作如下:

[root@server4 ~]# yum install gcc pcre-devel zlib-devel -y
[root@server4 ~]# tar zxf nginx-1.17.4.tar.gz
[root@server4 ~]# yum install gd-devel-2.0.35-26.el7.x86_64.rpm -y
[root@server4 ~]# cd nginx-1.17.4
[root@server4 ~]# ./configure --prefix=/usr/local/nginx  --pid-path=/var/run/nginx/nginx.pid --with-http_image_filter_module=dynamic --with-http_realip_module
[root@server4 ~]# make && make install
[root@server4 ~]# vim /usr/local/nginx/conf/nginx.conf
 35     server {
 36         listen       80;
 37         server_name  daolian.ranran.org;
 38 
 39         charset utf-8;
 40 
 41         #access_log  logs/host.access.log  main;
 42 
 43         location / {
 44             root   /web;
 45             index  index.html index.htm;
 46         }

[root@server4 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@server4 ~]# nginx -t 
[root@server4 ~]# nginx
[root@server4 ~]# mkdir /web
[root@server4 ~]# vim /web/index.html
daolian.ranran.org
[root@server4 ~]# vim /etc/hosts
172.25.2.4 server4 daolian.ranran.org
[root@server4 ~]# curl daolian.ranran.org 
daolian.ranran.org
[root@server4 ~]# vim /web/index.html
<html>
<body>
<br>盗链图片</br>
<img src="http://www.ranran.org/download/vim.jpg">
</body>
</html>

Nginx学习笔记(八)——Nginx的盗链与防盗链Nginx学习笔记(八)——Nginx的盗链与防盗链

2、在server1主机(被盗链主机)上进行如下操作:

cp /usr/local/nginx/html/download/vim.jpg  /web/

3、浏览器访问http://daolian.westos.org/
Nginx学习笔记(八)——Nginx的盗链与防盗链

1.2 nginx服务设置防盗链

1、在被盗方(server1端)编辑nginx.conf文件

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf   #在该server模块中添加158-163行的设置
139     server {
140         listen 80;
141         server_name www.ranran.org bbs.ranran.org;
142         #rewrite ^/(.*)$ https://www.ranran.org/$1 permanent;
143         #rewrite ^/bbs$ http://bbs.ranran.org/ permanent;
144         #rewrite ^/bbs/(.*)$ http://bbs.ranran.org/$1 permanent;
145         if ($host = "bbs.westos.org"){
146                 rewrite ^/(.*)$ http://www.ranran.org/bbs/$1 permanent;
147         }
148         #set_real_ip_from 172.25.2.0/24;
149         #real_ip_header X-Forwarded-For;
150         #real_ip_recursive on;
151 
152         location / {
153                 #return 200 "client real ip: $remote_addr\n";
154                 root /web;
155                 index index.html;
156         }
157 
158         location ~* \.(gif|jpg|png|jpeg)$ {
159                    root /web;
160                 valid_referers none blocked xin.westos.org;
161                 if ($invalid_referer) {
162                         return 403;
163                 }
164         }
165     }
 
[root@server1 ~]# /usr/local/nginx/sbin/nginx -s reload   #修改完配置文件之后,重载nginx服务

2、浏览器访问http://daolian.ranran.org/
Nginx学习笔记(八)——Nginx的盗链与防盗链虽然防盗链配置成功了,但是,我们会发现,该web界面并不是直观明了。
3、在被盗方(server1端)编辑nginx.conf文件

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf   #将162行注释,添加163行的内容
139     server {
140         listen 80;
141         server_name www.ranran.org bbs.ranran.org;
142         #rewrite ^/(.*)$ https://www.ranran.org/$1 permanent;
143         #rewrite ^/bbs$ http://bbs.ranran.org/ permanent;
144         #rewrite ^/bbs/(.*)$ http://bbs.ranran.org/$1 permanent;
145         if ($host = "bbs.westos.org"){
146                 rewrite ^/(.*)$ http://www.ranran.org/bbs/$1 permanent;
147         }
148         #set_real_ip_from 172.25.2.0/24;
149         #real_ip_header X-Forwarded-For;
150         #real_ip_recursive on;
151 
152         location / {
153                 #return 200 "client real ip: $remote_addr\n";
154                 root /web;
155                 index index.html;
156         }
157 
158         location ~* \.(gif|jpg|png|jpeg)$ {
159                 root /web;
160                 valid_referers none blocked www.ranran.org;
161                 if ($invalid_referer) {
162                         #return 403;
163                         rewrite ^/ http://bbs.ranran.org/daolian.jpg;
164                 }
165         }
166     }
 
 
[root@server1 ~]# /usr/local/nginx/sbin/nginx -s reload   #修改完配置文件之后,重载nginx服务

4、下载图片daolian.jpg,并将该图片防止/web/bbs目录下

[root@server1 ~]# ls /web/bbs/
daolian.jpg  index.html

5、测试:浏览器访问http://daolian.ranran.org/

Nginx学习笔记(八)——Nginx的盗链与防盗链

Nginx学习笔记(八)——Nginx的盗链与防盗链Nginx学习笔记(八)——Nginx的盗链与防盗链 草莓啾啾啾 发布了103 篇原创文章 · 获赞 21 · 访问量 5905 私信 关注
上一篇:saltstack架构拓展syndic


下一篇:ansible-playbook一键化部署apache服务