Linux Centos7下實現nginx防盜鏈部署

一、原理:

nginx 防止網站資源被盜用模塊

ngx_http_referer_module

​ HTTP Referer是Header的一部分,當瀏覽器向Web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器藉此可以獲得一些信息用於處理,例如防止未經允許的網站盜鏈圖片、文件等。因此HTTP Referer頭信息是可以通過程序來僞裝生成的,所以通過Referer信息防盜鏈並非100%可靠,但是,它能夠限制大部分的盜鏈情況.

二、防盜鏈配置

[root@nginx-server ~]# vim /etc/nginx/nginx.conf

日誌格式添加"$http_referer",默認已經打開了的,不需要操作。

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                '$status $body_bytes_sent "$http_referer" '
                                 '"$http_user_agent" "$http_x_forwarded_for"';

三、配置原服務器

準備兩臺機器,一張圖片
1、在網站發佈目錄下編輯html文件並準備一張圖片名爲33.jpg,這裏網站發佈目錄爲/web1

vim /web1/index.html
<html>
        <head>
        <meta charset="utf-8">
        <title>hostphoto.com</title>
</head>
<body>
    <center><img src="33.jpg" alt="fangxi" width="1000px" height="900px" /></center>
</body>
</html>

2、編輯nginx子配置文件

location / {
        root   /web1;
        index  index.html index.htm;
        valid_referers none blocked 192.168.16.150;
                if ($invalid_referer) {
                   return 403;
                }
    }

• none : 允許沒有http_refer的請求訪問資源;
• blocked : 允許不是http://開頭的,不帶協議的請求訪問資源---被防火牆過濾掉的;
• server_names : 只允許指定ip/域名來的請求訪問資源(白名單);

3、檢查配置文件是否有錯誤,沒有錯誤重新加載。

nginx -t

nginx -s reload

四、配置要盜用的服務器

1、配置nginx訪問頁面並創建目錄

location / {
        root   /web1;
        index  index.html index.htm;
    }
mkdir /web1

2、創建頁面

vim /web1/index.html
<html>
<body style="background-color:red;">
    <img src="http://192.168.16.150/33.jpg" />
</body>
</html>

五、測試

當開啓防盜鏈時,訪問要盜用的服務器,圖片顯示不出來。

當把防盜鏈代碼註釋之後,訪問要盜用的服務器,圖片就可以顯示出來。

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