nginx防盜鏈的方法
一般邓萨,我們做好防盜鏈之后其他網(wǎng)站盜鏈的本站圖片就會全部失效無法顯示蔗蹋,但是您如果通過瀏覽器直接輸入圖片地址朋沮,仍然會顯示圖片蛇券,仍然可以右鍵圖片另存為下載文件!
依然可以下載樊拓?這樣就不是徹底的防盜了纠亚!那么,nginx應(yīng)該怎么樣徹底地實(shí)現(xiàn)真正意義上的防盜鏈呢筋夏?
首先蒂胞,我們來看下nginx如何設(shè)置防盜鏈
如果您使用的是默認(rèn)站點(diǎn),也就是說条篷,您的站點(diǎn)可以直接輸入服務(wù)器IP訪問的骗随,使用root登錄,修改 /usr/local/nginx/conf/nginx.conf 這個配置文件赴叹。
修改/usr/local/nginx/conf/vhost/你的域名.conf 這個配置文件鸿染,找到:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
expires 30d;
把這一段刪掉,修改成:
location ~* \.(gif|jpg|png|jpeg)$ {
expires 30d;
valid_referers none blocke *.hugao8.com www.hugao8.com m.hugao8.com *.baidu.com *.google.com;
if ($invalid_referer) {
rewrite ^/ http://ww4.sinaimg.cn/bmiddle/051bbed1gw1egjc4xl7srj20cm08aaa6.jpg;
#return 404;
}
}
第一行: location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
其中“gif|jpg|jpeg|png|bmp|swf”設(shè)置防盜鏈文件類型乞巧,自行修改涨椒,每個后綴用“|”符號分開!
第三行:valid_referers none blocked *.it300.com it300.com;
就是白名單摊欠,允許文件鏈出的域名白名單丢烘,自行修改成您的域名柱宦!*.it300.com這個指的是子域名些椒,域名與域名之間使用空格隔開!
第五行:rewrite ^/ http://www.it300.com/static/images/404.jpg;
這個圖片是盜鏈返回的圖片掸刊,也就是替換盜鏈網(wǎng)站所有盜鏈的圖片免糕。這個圖片要放在沒有設(shè)置防盜鏈的網(wǎng)站上,因?yàn)榉辣I鏈的作用,這個圖片如果也放在防盜鏈網(wǎng)站上就會被當(dāng)作防盜鏈顯示不出來了石窑,盜鏈者的網(wǎng)站所盜鏈圖片會顯示X符號牌芋。
這樣設(shè)置差不多就可以起到防盜鏈作用了,上面說了松逊,這樣并不是徹底地實(shí)現(xiàn)真正意義上的防盜鏈躺屁!
我們來看第三行:valid_referers none blocked *.it300.com it300.com;
valid_referers 里多了“none blocked”
我們把“none blocked”刪掉,改成
valid_referers *.it300.com it300.com;
nginx徹底地實(shí)現(xiàn)真正意義上的防盜鏈完整的代碼應(yīng)該是這樣的:
location ~* \.(gif|jpg|png|jpeg)$ {
expires 30d;
valid_referers *.hugao8.com www.hugao8.com m.hugao8.com *.baidu.com *.google.com;
if ($invalid_referer) {
rewrite ^/ http://ww4.sinaimg.cn/bmiddle/051bbed1gw1egjc4xl7srj20cm08aaa6.jpg;
#return 404;
}
}
這樣您在瀏覽器直接輸入圖片地址就不會再顯示圖片出來了经宏,也不可能會再右鍵另存什么的犀暑。
第五行:rewrite ^/ http://www.it300.com/static/images/404.jpg;
這個是給圖片防盜鏈設(shè)置的防盜鏈返回圖片,如果我們是文件需要防盜鏈下載烁兰,把第五行:
rewrite ^/ http://www.it300.com/static/images/404.jpg;
改成一個鏈接耐亏,可以是您主站的鏈接,比如把第五行改成:
rewrite ^/ http://www.it300.com;
這樣沪斟,當(dāng)別人輸入文件下載地址广辰,由于防盜鏈下載的作用就會跳轉(zhuǎn)到您設(shè)置的這個鏈接!
最后主之,配置文件設(shè)置完成別忘記重啟nginx生效择吊!
一:一般的防盜鏈如下:
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后綴的文件實(shí)行防盜鏈
第二行: 表示對www.ingnix.com這2個來路進(jìn)行判斷
if{}里面內(nèi)容的意思是史翘,如果來路不是指定來思是枉长,如果來路不是指定來路就跳轉(zhuǎn)到http://www.jzxue.com/retrun.html頁面,當(dāng)然直接返回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實(shí)現(xiàn)Nginx防盜鏈
實(shí)現(xiàn)方法如下:
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. 用一下參數(shù)重新編譯nginx:
./configure --add-module=path/to/nginx-accesskey
上面需要加上原有到編譯參數(shù),然后執(zhí)行: make && make install
4. 修改nginx的conf文件问欠,添加以下幾行:
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
其中:
accesskey為模塊開關(guān)肝匆;
accesskey_hashmethod為加密方式MD5或者SHA-1;
accesskey_arg為url中的關(guān)鍵字參數(shù)顺献;
accesskey_signature為加密值旗国,此處為mypass和訪問IP構(gòu)成的字符串。
訪問測試腳本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錯誤能曾。