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>

在這裏插入圖片描述在這裏插入圖片描述

2、在server1主機(被盜鏈主機)上進行如下操作:

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

3、瀏覽器訪問http://daolian.westos.org/
在這裏插入圖片描述

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/
在這裏插入圖片描述雖然防盜鏈配置成功了,但是,我們會發現,該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/

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章