一:通常的防盜鏈以下:php
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也是能夠的。html
二:針對圖片目錄防止盜鏈 nginx
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:markdown
./configure --add-module=path/to/nginx-accesskey <<pestd add
上面須要加上原有到編譯參數,而後執行: make && make install測試
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:ui
<? $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加密