Nginx作為web靜態資源服務器——防盜鏈


基於http_refer防盜鏈配置模塊

Syntax:valid_referers none | blocked | server_names | string ...;

Default:——

Context:server,location

HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用於處理。比如從我主頁上鏈接到一個朋友那里,他的服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。

設置防盜鏈的作用是為了防止,視頻、圖片...防止被其他網站盜用

配置語句

 location ~ .*\.(jpg|gif|png)$ {
        gzip on;
        gzip_http_version 1.1;
        gzip_comp_level 4;
        gzip_types text/plain application/javascript applicattion/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;


        valid_referers none blocked 192.168.96.135; # 允許跳轉的ip
        if ($invalid_referer) {
             return 403;
        }
        root /opt/app/code/images;
    }

one代表沒有referer;blocded代表有referer但是被防火牆或者是代理給去除了。

首先當我輸入我要打開的網址的時候,因為是直接輸入的沒有referer所以匹配了
valid_referers后面的none或者是blocked 所以invalid_referer值為0 所以不進行跳轉.
當我是從這個網站里面的鏈接跳到該網站首頁的時候 因為referer的值是肯定包含srever_names 所以匹配了server_names所以不進行跳轉。
當我從搜素引擎進去的時候因為referer字段類似於www.google.com.hk/search
開始進行匹配 發現沒有一個匹配,則此時會設置invalid_referer值為1 if語句成功執行,進行了跳轉. 達到功能

測試

使用curl 命令

curl -e "http://192.168.96.188" -I http://192.168.96.188/test.png,報403錯誤

curl -e "http://192.168.96.135" -I http://192.168.96.188/test.png,可正常訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM