Nginx服務(wù)器下防盜鏈的方法介紹
修改 /usr/local/nginx/conf/nginx.conf 這個(gè)配置文件。
找到
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; }[/code]
修改成:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked *.jannn.com jannn.com; if($invalid_referer) { rewrite ^/ http://www.jannn.com/404.jpg; #return404; } expires 30d; }
第一行:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
其中“gif|jpg|jpeg|png|bmp|swf”設(shè)置防盜鏈文件類型,自行修改,每個(gè)后綴用“|”符號(hào)分開!
第三行:
valid_referers none blocked *.jannn.com jannn.com;
就是白名單,允許文件鏈出的域名白名單,自行修改成您的域名!*.jannn.com這個(gè)指的是子域名,域名與域名之間使用空格隔開!
第五行:
rewrite ^/ http://www.jannn.com/404.jpg;
這個(gè)圖片是盜鏈返回的圖片,也就是替換盜鏈網(wǎng)站所有盜鏈的圖片。這個(gè)圖片要放在沒有設(shè)置防盜鏈的網(wǎng)站上,因?yàn)榉辣I鏈的作用,這個(gè)圖片如果也放在防盜鏈網(wǎng)站上就會(huì)被當(dāng)作防盜鏈顯示不出來了,盜鏈者的網(wǎng)站所盜鏈圖片會(huì)顯示X符號(hào)。
這樣設(shè)置差不多就可以起到防盜鏈作用了,上面說了,這樣并不是徹底地實(shí)現(xiàn)真正意義上的防盜鏈!
我們來看第三行:
valid_referers none blocked *.jannn.com jannn.com;
valid_referers 里多了“none blocked”
我們把“none blocked”刪掉,改成
valid_referers *.jannn.com jannn.com;
nginx徹底地實(shí)現(xiàn)真正意義上的防盜鏈完整的代碼應(yīng)該是這樣的:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers *.jannn.com jannn.com; if($invalid_referer) { rewrite ^/ http://www.jannn.com/404.jpg; #return404; } expires 30d;
這樣您在瀏覽器直接輸入圖片地址就不會(huì)再顯示圖片出來了,也不可能會(huì)再右鍵另存什么的。
第五行:
rewrite ^/ http://www.jannn.com/404.jpg;
這個(gè)是給圖片防盜鏈設(shè)置的防盜鏈返回圖片,如果我們是文件需要防盜鏈下載,把第五行:
rewrite ^/ http://www.jannn.com/404.jpg;
改成一個(gè)鏈接,可以是您主站的鏈接,比如把第五行改成小簡博客主頁:
rewrite ^/ http://www.jannn.com;
這樣,當(dāng)別人輸入文件下載地址,由于防盜鏈下載的作用就會(huì)跳轉(zhuǎn)到您設(shè)置的這個(gè)鏈接!
最后,配置文件設(shè)置完成別忘記重啟nginx生效!
平滑重啟nginx:
/etc/init.d/nginx reload
后面幾種方法:
原文:Nginx防盜鏈詳細(xì)解說
一般常用的方法是在server或者location段中加入!
valid_referers none blocked www.yiibase.com yiibase.com;
詳見下面的例子
一、針對(duì)不同的文件類型
上面那篇文章詳細(xì)且經(jīng)過本人的實(shí)踐,卻是可行,網(wǎng)上大都說是
location ~* \.(gif|jpg|jpeg|png|bmp|txt|zip|jar|swf)$ { valid_referers none blocked *.mynginx.com; if ($invalid_referer) { rewrite ^/ http://www.mynginx.com/daolian.gif; #return 403; }
將這段代碼添加到server段,但是其實(shí)后面還有
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; }
必須將這兩段代碼合成為一段,否則,防盜鏈并不會(huì)生效。有點(diǎn)奇怪的是,我開放到防盜鏈開始幾天都是沒出現(xiàn)資金的防盜鏈圖片,過了幾天后才出現(xiàn)的,不知道為什么,知道的也可以告訴我。
二、針對(duì)不同的目錄
location /img/ { root /data/img/; valid_referers none blocked *.yiibase.com yiibase.com; if($invalid_referer) { rewrite ^/ http://www.yiibase.com/images/error.gif; #return403; } }
以上是nginx自帶的防盜鏈功能。
三、nginx 的第三方模塊ngx_http_accesskey_module 來實(shí)現(xiàn)下載文件的防盜鏈
安裝Nginx和nginx-http-access模塊
#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_MODULESngx_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:
<?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>"; $output_org_url="<a href=http://www.example.cn/download /G3200507120520LM.rar>download_org_path</a>"; 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.yiibase.com/download/file.zip
使用ngx_http_accesskey_module 模塊后http://www.yiibase.com/download/file.zip?key=09093abeac094. 只有給定的key值正確了,才能夠下載download目錄下的file.zip。而且 key 值是根據(jù)用戶的IP有關(guān)的,這樣就可以避免被盜鏈了。
據(jù)說Nginx HttpAccessKeyModule現(xiàn)在連迅雷都可以防了,可以嘗試一下。
- nginx利用referer指令實(shí)現(xiàn)防盜鏈配置
- Nginx防盜鏈的配置方法
- Nginx圖片防盜鏈配置實(shí)例
- 配置Nginx的防盜鏈的操作方法
- nginx配置防盜鏈的三種實(shí)現(xiàn)方式總結(jié)
- node+axios實(shí)現(xiàn)下載外網(wǎng)文件到本地
- nodejs連接ftp上傳下載實(shí)現(xiàn)方法詳解【附:踩坑記錄】
- nodejs實(shí)現(xiàn)生成文件并在前端下載
- Node.js實(shí)現(xiàn)下載文件的兩種實(shí)用方式
- Node.js實(shí)現(xiàn)批量下載圖片簡單操作示例
- node.js突破nginx防盜鏈機(jī)制,下載圖片案例分析
相關(guān)文章
蘋果M1芯片安裝nginx 并且部署vue項(xiàng)目步驟詳解
在本篇文章里小編給大家整理了一篇關(guān)于蘋果M1芯片安裝nginx 并且部署vue項(xiàng)目步驟詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。2021-11-11Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式
這篇文章主要介紹了Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式,Ubuntu下的配置會(huì)有一些不同之處,需要的朋友可以參考下2015-07-07詳解用nginx+WordPress搭建個(gè)人博客全流程
這篇文章主要介紹了詳解用nginx+WordPress搭建個(gè)人博客全流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04修改nginx站點(diǎn)根目錄總結(jié)經(jīng)驗(yàn)(小結(jié))
這篇文章主要介紹了修改nginx站點(diǎn)根目錄總結(jié)經(jīng)驗(yàn)(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06nginx 502、413和404錯(cuò)誤原因排查和解決辦法總結(jié)
這篇文章主要給大家介紹了NGINX 502錯(cuò)誤排查,辦法總結(jié),Nginx 413錯(cuò)誤的排查以及Nginx 400錯(cuò)誤排查,文中通過代碼示例給出了詳細(xì)的排查方法和解決方案,需要的朋友可以參考下2023-12-12如何配置Nginx每個(gè)進(jìn)程最多打開的文件數(shù)量
這篇文章主要介紹了配置Nginx每個(gè)進(jìn)程最多打開的文件數(shù)量,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06centos7系統(tǒng)下nginx安裝并配置開機(jī)自啟動(dòng)操作
這篇文章主要介紹了centos7系統(tǒng)下nginx安裝并配置開機(jī)自啟動(dòng)操作方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02