nginx 的第三方模塊ngx_http_accesskey_module 來實現下載文件的防盜鏈步驟(linux系統下)

nginx 的第三方模塊ngx_http_accesskey_module 來實現下載文件的防盜鏈步驟(linux系統下),安裝Nginx和HttpAccessKeyModule模塊(參考LNMP環境搭建:
第一步:在/usr/local/src/下下載模塊壓縮包:
    wget http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz (下載)
    tar zxvf Nginx-accesskey-2.0.3.tar.gz                               (解壓)
    cd nginx-accesskey-2.0.3/                         (切換目錄)

    解壓此文件後,找到nginx-accesskey-2.0.3下的config文件。
    編輯此文件:替換其中的"$HTTP_ACCESSKEY_MODULE"爲"ngx_http_accesskey_module"
    vi config
    修改結果以下:
    #HTTP_MODULES="$HTTP_MODULES $HTTP_ACCESSKEY_MODULE"
    HTTP_MODULES="$HTTP_MODULES ngx_http_accesskey_module" 
第二步:安裝nginx1.5.2,–with-***設置的是模塊源碼包的路徑

    tar zxvf nginx-1.5.2.tar.gz
    cd nginx-1.5.2
    ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module \
    --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module \
    --add-module=/usr/local/src/nginx-accesskey-2.0.3/

    make
    make install

    /usr/sbin/groupadd www
    /usr/sbin/useradd -g www www

    建立web根目錄並修改權限,固然能夠指定其餘目錄,只要和Nginx配置文件一致便可
    mkdir -p /data0/htdocs/www
    chmod +w /data0/htdocs/www
    chown -R www:www /data0/htdocs/www

    vi /usr/local/webserver/nginx/conf/nginx.conf
    修改#user  nobody;爲user www www;
    修改location /{}中的root html;爲網站目錄例如/data0/htdocs/www
    在/data0/htdocs/www目錄中隨便建立一個index.html文件
    啓動nginx並訪問測試
    ulimit -SHn 65535
    /usr/local/webserver/nginx/sbin/nginx
    其餘命令:
    測試nginx的配置文件是否正確/usr/local/webserver/nginx/sbin/nginx -t
    修改nginx配置文件後使之生效/usr/local/webserver/nginx/sbin/nginx -s reload
    查看端口確認是否啓動成功    netstat -tunpl | grep 80
    查看第三方模塊ngx_http_accesskey_module是否添加上:/usr/local/webserver/nginx/sbin/nginx -V

第三步:修改nginx的conf文件,server{***}裏邊添加如下幾行

    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產生的下載路徑格式是:http://*****.com/download/1.zip?key=    
    這樣,當訪問沒有跟參數同樣時,其餘用戶打開時,就出現:403

    訪問測試腳本download.php:
<?php
$ipkey= md5("mypass".$_SERVER['REMOTE_ADDR']);
//$ipkey生成的算法要跟配置文件的設置保持一致
$output_add_key="<a href=http://192.168.1.82/download/a.jpg?key=".$ipkey.">
download_add_key</a>";
$output_org_url="<a href=http://192.168.1.82/download/a.jpg>download_org_path</a>";
 
echo $output_add_key;
echo $output_org_url;
?>


訪問第一個download_add_key連接能夠正常下載,第二個連接download_org_path會返回403 Forbidden錯誤。

若出現不了,「訪問第一個download_add_key連接能夠正常下載,第二個連接download_org_path會返回403 Forbidden錯誤」這種結果,可查看進程:
ps aux | grep nginx
kill -9 2366
kill -9 7863
最後命令啓動nginx:  /usr/local/webserver/nginx/sbin/nginx 
OK完成,能夠查看結果啦 php

相關文章
相關標籤/搜索