nginx 簡單實現防盜鏈-保護自己的網站

我們經常會看到在瀏覽某一圖片時會彈出一“403權限禁止”錯誤,這說明有可能正在瀏覽的這個網站用到的圖片在盜用別的網站圖片,而被盜用的網站採用了防盜鏈技術。那麼怎樣才能不讓自己的網站受害呢?

nginx 簡單實現防盜鏈-保護自己的網站

nginx referer指令簡介

nginx模塊ngx_http_referer_module通常用於阻擋來源非法的域名請求.我們應該牢記,偽裝Referer頭部是非常簡單的事情,所以這個模塊只能用於阻止大部分非法請求.我們應該記住,有些合法的請求是不會帶referer來源頭部的,所以有時候不要拒絕來源頭部(referer)為空的請求.

首先,我們來看下nginx如何設置防盜鏈

cd /usr/local/nginx/conf/vhosts
vim test.conf
server{
listen 80;
server_name www.nbwiki.com;
index index.html index.htm index.php;
root /data/www;
# 定義訪問日誌的路徑和格式 access_log /tmp/nginx_access.log main;
# 不記錄靜態文件的的訪問日誌 location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$ {
access_log off;
expires 10d;
valid_referers none blocked *.nbwiki.com *.baidu.com *.google.com;
if ($invalid_referer) {
rewrite ^/ http://www.nbwiki.com/retrun.html;
#return 403; }
}
}
  • location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2) 表示對gif、jpg、png、swf、flv後綴的文件實行防盜鏈

  • valid_referers none blocked 表示對 www.nbwiki.com 這2個來路進行判斷 if{ }裡面內容的意思是,如果來路不是指定來路域名,如果來路不是指定來路就跳轉到 http://www.nbwikicom/retrun.html 頁面,當然直接返回403也是可以的。

用curl去檢測那些invalid_referer能否訪問我們網站:

curl -e 可以用來指定referer

curl -e 'http://www.xxx.com/2222' -x127.0.0.1:80 'http://www.nbwiki.com/static/im/test.jpg' -I
HTTP/1.1 403 ForbiddenServer: nginxDate: Mon, 22 Aug 2016 08:15:59 GMT
Content-Type: text/html
Content-Length: 168Connection: keep-alive

nginx防盜鏈指令

  • 語法: referer_hash_bucket_size size;

  • 默認值: referer_hash_bucket_size 64;

  • 配置段: server, location

  • 這個指令在nginx 1.0.5中開始出現.

  • Sets the bucket size for the valid referers hash tables. The details of setting up hash tables are provided in a separate document.

圖片使用來源頭部做防盜鏈是最合理的. 簡單、實用。但是沒有辦法防採集。如果想做文件的防盜鏈請參考前面章節講到的使用secure link文件防盜鏈文章.

最後,配置文件設置完成別忘記重啟nginx生效!


分享到:


相關文章: