用accesskey模塊實現Nginx服務器深度防盜鏈

防盜鏈是很多下載類網站必須做的工作,各個網站會採取不同的策略來實現這一功能,各有優缺點。下面介紹一下Linux主機Nginx服務器下利用 accesskey模塊實現Nginx服務器深度防盜鏈的方法。比起常用的通過判斷referer的方法,其防盜鏈能力更加強勁,就算迅雷什麼的也沒有辦法對付。
一、如何爲nginx安裝accesskey模塊
首先下載Nginx-accesskey模塊:http://wiki.nginx.org/p_w_picpaths/5/51/Nginx-accesskey-2.0.3.tar.gz
#tar zxvj nginx-accesskey-2.0.3.tar.gz
比如說這時候文件解壓到/usr/src/nginx-accesskey-2.0.3
修改其目錄下的config文件
#vi ./config
將”$HTTP_ACCESSKEY_MODULE”替換成”ngx_http_accesskey_module”
殺死nginx進程
#kill `cat /usr/local/nginx/nginx.pid`
來到nginx的源代碼目錄下面 /usr/src/nginx-0.7.54,重新編譯nginx
#cd /usr/src/nginx-0.7.54/
#./configure –add-module=/usr/src/nginx-accesskey-2.0.3
(注意:其他nginx編譯參數請按照自己的需要添加,這裏省略未寫)
#make && make install
配置nginx.conf
#vi /usr/local/nginx/conf/nginx.conf
在你需要設置防盜鏈的主機的下面加入以下內容,比如主機根目錄下面download目錄下面的文件都要防盜鏈,那麼就加入:
location /download
{
accesskey on;
accesskey_hashmethod md5;
accesskey_arg “key”;
accesskey_signature “password$remote_addr”;
}
注意:這裏accesskey_signature後面的password是干擾碼,你可以改爲自己需要的密碼。
設置完畢,重啓nginx
#ulimit -SHn 51200
#/usr/local/nginx/sbin/nginx
至此,accesskey模塊安裝完畢。
二、如何使用防盜鏈功能
按照以上的設置,download文件夾下所有的文章如果用地址直接引用,比如http://www.xinkexue.com/download/test.rar,都會提示403錯誤,無法訪問到資源,這也就是我們說的防盜鏈功能已經生效。那麼要如何才能讓我們的目標用戶下載這些文件呢?方法就是我們要給用戶一個正確的鏈接,形如http://www.xinkexue.com/download … 3b5423523952352bg2g
這個key後面的參數是根據前面設定的accesskey_hashmethod和accesskey_signature確定的,比如我們前面的設定就是對password$remote_addr($remote_addr代表客戶端傳遞過來的IP)的值進行MD5加密運算得到的結果。我們要把帶有 key值的地址重新定向給目標用戶,這樣我們的目標用戶才能下載到資源,沒有key或者key值錯誤,都將被認爲是盜鏈,而無法下載。
下面我們用PHP腳本的header重定向函數舉例說明:

Ctrl+Enter 發佈

發佈

取消

掃一掃,領取大禮包

0

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