防盜鏈Nginx設置圖片防盜鏈,設置無效的請仔細看紅字


*******************************************************************
切記,替換的圖片地址要使用沒有防盜鏈的網站圖片,否則由於替換的圖片其實也處於防盜鏈情況下,會造成仍舊無法顯示設置的圖片。
*******************************************************************

一、全站圖片防盜鏈

在/usr/local/nginx/conf/nginx.conf文件要添加防盜鏈的server段里添加下面的代碼:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
valid_referers none blocked *.ipple.net *.abc.com;
if ($invalid_referer)
{
rewrite ^/ http://www.otherdomin.com/403.jpg;
#return 403;
}
}

測試一下配置是否OK
# /usr/local/nginx/sbin/nginx -t
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

然后執行如下命令重啟lnmp即可:注:這里用的是lnmp的自動安裝包里的shell,你如果是原生安裝的請用原來的辦法重啟就可以了。

# /root/lnmp restart

說明:
1、請將代碼中的*.ipple.net *.abc.com等換成你自己的域名。
2、請確保server段中只有一個location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$,否則可能導致代碼無效。

如果有下面這段代碼,請將其刪除或者與上面的代碼合並成一段:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
再次重啟lnmp,你會發現,防盜鏈設置已經生效了。

二:針對圖片目錄防止盜鏈

location /images/
{
alias /data/images/;
valid_referers none blocked server_names *.ipple.net ipple.net ;
if ($invalid_referer)
{
return 403;
}
}

三:使用第三方模塊HttpAccessKeyModule實現Nginx防盜鏈

實現方法如下:
1. 下載NginxHttpAccessKeyModule模塊文件:Nginx-accesskey-2.0.3.tar.gz;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. 用一下參數重新編譯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為模塊開關;
accesskey_hashmethod為加密方式MD5或者SHA-1;
accesskey_arg為url中的關鍵字參數;
accesskey_signature為加密值,此處為mypass和訪問IP構成的字符串。

訪問測試腳本download.php:
$ipkey= md5(“mypass”.$_SERVER['REMOTE_ADDR']);
$output_add_key=”<a href=http://www.domain.com/download/G3200507120520LM.rar?key=”.$ipkey.”>download_add_key</a><br />”;
$output_org_url=”<a href=http://www.domain.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錯誤。

參考:NginxHttpAccessKeyModule http://wiki.nginx.org/NginxHttpAccessKeyModule#accesskey


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM