Nginx防盜鏈的3種方法


一:一般的防盜鏈如下:

location ~* \.(gif|jpg|png|swf|flv)$ { 
  valid_referers none blocked www.jzxue.com jzxue.com ; if ($invalid_referer) { rewrite ^/ http://www.jzxue.com/retrun.html; #return 403; } }

第一行:gif|jpg|png|swf|flv
表示對gif、jpg、png、swf、flv后綴的文件實行防盜鏈
第二行: 表示對www.ingnix.com這2個來路進行判斷
if{}里面內容的意思是,如果來路不是指定來思是,如果來路不是指定來路就跳轉到http://www.jzxue.com/retrun.html頁面,當然直接返回403也是可以的。

二:針對圖片目錄防止盜鏈

location /images/ { alias /data/images/; valid_referers none blocked server_names *.xok.la xok.la ; if ($invalid_referer) {return 403;} } 

三:使用第三方模塊ngx_http_accesskey_module實現Nginx防盜鏈
實現方法如下:
1. 下載NginxHttpAccessKeyModule模塊文件:http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz
2. 解壓此文件后,找到nginx-accesskey-2.0.3下的config文件。編輯此文件:替換其中的”$HTTP_ACCESSKEY_MODULE”為”ngx_http_accesskey_module”;
3. 用一下參數重新編譯nginx:

./configure --add-module=path/to/nginx-accesskey <<pestd add

上面需要加上原有到編譯參數,然后執行: make && make install

  1. 修改nginx的conf文件,添加以下幾行:
location /download { accesskey on; accesskey_hashmethod md5; accesskey_arg "key"; accesskey_signature "mypass$remote_addr"; }

其中:
accesskey為模塊開關;
accesskey_hashmethod為加密方式MD5或者SHA-1;
accesskey_arg為url中的關鍵字參數;
accesskey_signature為加密值,此處為mypass和訪問IP構成的字符串。
訪問測試腳本download.php:

<? $ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']); $output_add_key="<a href=http://www.jzxue.com/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />"; $output_org_url="<a href=http://www.jzxue.com/download/G3200507120520LM.rar>download_org_path</a><br />"; echo $output_add_key; echo $output_org_url; ?>

訪問第一個download_add_key鏈接可以正常下載,第二個鏈接download_org_path會返回403 Forbidden錯誤。
參考:
NginxHttpAccessKeyModule
http://xok.la/2009/03/nginx_http_accesskey_module_referer.html


免責聲明!

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



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