一:一般的防盜鏈如下:
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) {return403;} }
三:使用第三方模組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<add
上面需要加上原有到編譯參數,然後執行: make && make install
- 修改nginx的conf檔案,添加以下幾行:
location /download { accesskeyon; 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=".$ipkey.">download_add_key
";$output_org_url="download_org_path
";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
以上就介紹了Nginx防盜鏈的3種方法,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。