關于IIS防盜鏈和Apache防盜鏈的方法,很早之前就給大家分享過,今天再給朋友們介紹一下Nginx防盜鏈方法,本文來自《Slyar Home》博客,感謝作者的辛苦勞動。
一般情況下,防盜鏈是針對軟件下載和圖片的,由于一般的站點不提供資源下載,所以本文主要是針對圖片的防盜鏈
1、如果對全站圖片做防盜鏈,至少需要一個另外的域名存放指向圖片。因為如果對全站圖片做了防盜鏈,包括盜鏈提示圖片在內的所有圖片都不可能顯示。
此類情況修改 /usr/local/nginx/conf/nginx.conf 文件
2、對單獨域名配置圖片防盜鏈,個人比較推薦,一是便于控制,二是可以重新創建一個域名在同服務器上用來存放盜鏈提示圖片。
此類情況修改 /usr/local/nginx/conf/vhost/你自己域名.conf 文件
3、你需要準備一張盜鏈提示圖片,放在其它的服務器或者其它域名下(圖片您自己做吧,這里不提供了)
4、在配置文件里找到類似下面location...jpg...這樣的代碼,然后照著改吧,我慢慢解釋
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
access_log off;
valid_referers none blocked *.slyar.com *.jetfond.com *.youdao.com *.zhuaxia.com *.xianguo.com *.google.cn *.google.com *.google.com.tw *.google.com.sg *.google.com.hk *.bloglines.com image.soso.com bing.com cn.bing.com image.baidu.com *.feedburner.com *.feedsky.com;
if ($invalid_referer)
{
rewrite ^/ http://kvm.slyar.com/slyar_hotlinking.png;
}
}
expires 30d; //客戶端緩存時間,無關盜鏈
access_log off; //不記錄圖片訪問日志,無關盜鏈
valid_referers none blocked... //允許訪問圖片的站點,blocked支持前綴通配符。none需要解釋一下,如果你不知道HTTP Refer是什么,那就不知道好了,如果你知道,那這個none就表示匹配沒有Refer的訪問,通俗點說就是直接用URL訪問的,這里我寫著表示允許,如果你連直接輸入圖片地址都不允許看到圖片的話,可以刪掉這個參數
rewrite ^/ http://kvm.slyar.com/slyar_hotlinking.png; //盜鏈請求跳轉到某個圖片或者某個頁面,隨便
5、:wq保存退出
6、重新加載Nginx配置文件,done
/etc/init.d/nginx reload