綠色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網(wǎng)

技術(shù)教程
您的位置:首頁服務(wù)器類Web服務(wù)器 → nginx服務(wù)器防盜鏈設(shè)置教程 (nginx圖片防盜鏈操作)

nginx服務(wù)器防盜鏈設(shè)置教程 (nginx圖片防盜鏈操作)

我要評(píng)論 2012/09/26 11:43:45 來源:綠色資源網(wǎng) 編輯:m.sonlywya.cn [ ] 評(píng)論:0 點(diǎn)擊:194次

Nginx 是一個(gè)很牛的高性能Web和反向代理服務(wù)器, 它具有有很多非常優(yōu)越的特性; 在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯(cuò)的替代品,目前Web服務(wù)器調(diào)查顯示Apache下降Ngnix攀升,linux下更多的服務(wù)商選擇了Ngnix放棄了Apache; Nginx在美國是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一. 能夠支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)的響應(yīng), 感謝Nginx為我們選擇了 epoll and kqueue作為開發(fā)模型. 目前中國大陸使用nginx網(wǎng)站用戶有:新浪、網(wǎng)易、 騰訊,另外知名的微網(wǎng)志Plurk也使用nginx。

一般常用的方法是在server或者location段中加入!
valid_referers   none  blocked  www.hao251.com  hao251.com;
詳見下面的例子
其中 none 表示 空的來路,也就是直接訪問,比如直接在瀏覽器打開一個(gè)圖片
blocked 表示被防火墻標(biāo)記過的來路
server_names 也就是域名了。0.5.33以后的版本中,可以用*.hao251.com來表示所有的二級(jí)域名

一。針對(duì)不同的文件類型
location ~ .*\.(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
表示對(duì)wma、gif、jpg、png、swf、flv后綴的文件實(shí)行防盜鏈
第二行:*.hao251.com hao251.com
表示對(duì)*.hao251.com hao251.com這2個(gè)來路進(jìn)行判斷(*代表任何,任何的二級(jí)域名),你可以添加更多
if{}里面內(nèi)容的意思是,如果來路不是指定來路就跳轉(zhuǎn)到403錯(cuò)誤頁面,當(dāng)然直接返回404也是可以的,也可以是圖片。

二。針對(duì)不同的目錄
location /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;
    }
}


三。以上是nginx自帶的防盜鏈功能,另外還可以利用 nginx 的第三方模塊 ngx_http_accesskey_module 來實(shí)現(xiàn)下載文件的防盜鏈

安裝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" (這是此模塊的一個(gè)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
編譯成功后,在主配置文件加入類似下面的代碼:

server{
.....
    location /download {
        accesskey             on;
        accesskey_hashmethod  md5;
        accesskey_arg         "key";
        accesskey_signature   "mypass$remote_addr";
    }
}

/download 為你下載的目錄。

前臺(tái)php產(chǎn)生的下載路徑格式是:

1.http://*****.com/download/1.zip?key=<?php echo md5('mypass'.$_SERVER["REMOTE_ADDR"]);?>
這樣,當(dāng)訪問沒有跟參數(shù)一樣時(shí),其他用戶打開時(shí),就出現(xiàn):403

NginxHttpAccessKeyModule第三方模塊。實(shí)現(xiàn)方法如下:

1. 下載Nginx HttpAccessKeyModule模塊文件: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
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.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;
?>
訪問第一個(gè)download_add_key鏈接可以正常下載,第二個(gè)鏈接download_org_path會(huì)返回403 Forbidden錯(cuò)誤。

如果不怕麻煩,有條件實(shí)現(xiàn)的話,推薦使用Nginx HttpAccessKeyModule這個(gè)東西。

他的運(yùn)行方式是:如我的download 目錄下有一個(gè) file.zip 的文件。對(duì)應(yīng)的URI 是http://www.hao251.com/download/file.zip
使用ngx_http_accesskey_module 模塊后http://www.hao251.com/download/file.zip?key=09093abeac094. 只有給定的key值正確了,才能夠下載download目錄下的file.zip。而且 key 值是根據(jù)用戶的IP有關(guān)的,這樣就可以避免被盜鏈了。

據(jù)說Nginx HttpAccessKeyModule現(xiàn)在連迅雷都可以防了,可以嘗試一下。

下載:
Nginx 0.8.51 穩(wěn)定版下載:nginx-0.8.51,nginx/Windows-0.8.51
HttpAccessKeyModule第三方模塊下載:http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz

關(guān)鍵詞:nginx,服務(wù)器防盜鏈

閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視