nginx服務器防(fáng)盜鏈設置(zhì)教程 (nginx圖片(piàn)防盜鏈操作(zuò))
Nginx 是一個很牛的高性能Web和反向代理服務器(qì), 它具有有很多非常優越的特性; 在高連接並發的情況下,Nginx是Apache服務(wù)器不錯的替代品,目前(qián)Web服務器(qì)調查顯示Apache下降Ngnix攀(pān)升,linux下更多的服務商選(xuǎn)擇了Ngnix放棄了Apache; Nginx在美國是做虛擬主機生意的老板們經常選擇的軟件平台之一. 能夠支持高達 50,000 個並發連接數的響應, 感謝Nginx為我們選擇(zé)了 epoll and kqueue作為開發模型. 目前中國大陸使用nginx網站用戶(hù)有:新浪、網易、 騰訊,另外知名的微網誌(zhì)Plurk也(yě)使用nginx。
一般常用的方法(fǎ)是在server或者locations段中加入!
valid_referers none blocked www.hao251.com hao251.com;
詳見下麵的例子
其中 none 表示 空(kōng)的來路,也就是(shì)直接(jiē)訪問,比如直接在瀏覽器打開一個圖片
blocked 表示被(bèi)防火牆標記過的來路
server_names 也就是域名了(le)。0.5.33以後的版本中,可以用*.hao251.com來表示所有(yǒu)的二級域(yù)名
一。針對不同的文件類型
locations ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
valid_referers none blocked *.hao251.com hao251.com;
if ($invalid_referer) {
#rewrite ^/ http://www.hao251.com/error.html;
return 403;
}
}
第一行:wma|gif|jpg|png|swf|flv
表示對wma、gif、jpg、png、swf、flv後綴的文件實行防盜鏈
第二行(háng):*.hao251.com hao251.com
表示對*.hao251.com hao251.com這2個來(lái)路進行(háng)判斷(duàn)(*代(dài)表任何,任何的二級域名(míng)),你可(kě)以添加更多
if{}裏麵內容的意思是,如果來路不是指定來路就跳轉到403錯誤頁麵,當然直(zhí)接返回404也是可以的,也可以是圖片。
二。針對(duì)不同的目(mù)錄
locations /img/ {
root /data/img/;
valid_referers none blocked *.hao251.com hao251.com;
if ($invalid_referer) {
rewrite ^/ http://www.hao251.com/images/error.gif;
#return 403;
}
}
三。以上(shàng)是nginx自帶的防盜鏈功能,另外還可以利用 nginx 的(de)第三方(fāng)模(mó)塊 ngx_http_accesskey_module 來實現(xiàn)下載文件的防盜(dào)鏈
安裝Nginx和nginx-http-access模塊
#tar zxvf nginx-0.7.61.tar.gz
#cd nginx-0.7.61/
#tar xvfz nginx-accesskey-2.0.3.tar.gz
#cd nginx-accesskey-2.0.3
#vi config
#把HTTP_MODULES="$HTTP_MODULES $HTTP_ACCESSKEY_MODULE" 修改成HTTP_MODULES="$HTTP_MODULES ngx_http_accesskey_module" (這是此模塊的一個bug)
#./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-accesskey-2.0.3
編譯成功後(hòu),在主配置文件加(jiā)入類似下麵的代碼:
server{
.....
locations /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
}
/download 為(wéi)你下(xià)載的目錄。
前台php產生的下載路徑格式是:
1.http://*****.com/download/1.zip?key=<?php echo md5('mypass'.$_SERVER["REMOTE_ADDR"]);?>
這樣,當訪問沒有跟參數一(yī)樣時,其他用戶打開時,就出現:403
NginxHttpAccessKeyModule第三方模塊。實現(xiàn)方法如下:
1. 下載Nginx HttpAccessKeyModule模塊文件:Nginx-accesskey-2.0.3.tar.gz;
2. 解壓此文件後,找到nginx-accesskey-2.0.3下的(de)config文(wén)件。編輯此文件(jiàn):替換其中(zhōng)的"$HTTP_ACCESSKEY_MODULE"為"ngx_http_accesskey_module";
3. 用一下參數(shù)重新編譯nginx:
./configure --add-module=path/to/nginx-accesskey
4. 修改nginx的conf文件,添加以下幾行:
locations /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
其(qí)中:
accesskey為模塊開關;
accesskey_hashmethod為加密方式MD5或者SHA-1;
accesskey_arg為url中的關鍵字參數;
accesskey_signature為加密值,此(cǐ)處為mypass和訪問IP構成(chéng)的(de)字符串。
訪問測試腳本download.php:
<?
$ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']);
$output_add_key="<a href=http://www.example.cn/download/G3200507120520LM.rar?key=".$ipkey.">download_add_key</a><br />";
$output_org_url="<a href=http://www.example.cn/download/G3200507120520LM.rar>download_org_path</a><br />";
echo $output_add_key;
echo $output_org_url;
?>
訪問第一個download_add_key鏈接可以正常下載,第二個(gè)鏈接download_org_path會返回403 Forbidden錯誤。
如果不怕麻煩,有條(tiáo)件實現的話,推薦使用Nginx HttpAccessKeyModule這個東西。
他的運行方式是:如我的download 目(mù)錄下有一個 file.zip 的文件。對應的URI 是http://www.hao251.com/download/file.zip
使用ngx_http_accesskey_module 模塊後http://www.hao251.com/download/file.zip?key=09093abeac094. 隻有給定(dìng)的key值正確了,才能夠下載download目錄下的file.zip。而且 key 值是根據用戶的IP有關的,這樣就可以避(bì)免被盜鏈了。
據說Nginx HttpAccessKeyModule現在連迅雷(léi)都可以防了,可以嚐試一下。
下載:
Nginx 0.8.51 穩定版下載:nginx-0.8.51,nginx/Windows-0.8.51
HttpAccessKeyModule第(dì)三方模塊下(xià)載(zǎi):http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz
關鍵詞:nginx,服務器防盜(dào)鏈
閱讀本文後您有什麽(me)感想? 已有(yǒu) 人給出評價(jià)!
- 0
- 0
- 0
- 0
- 0
- 0