小知识:通过lua来配置实现Nginx服务器的防盗链功能

下载服务器时常被人盗链,时间久了导致服务器大量资源浪费,由于服务器使用nginx做为web服务器。nginx的防盗链方法有很多,可以使用现成的防盗链模块nginx-accesskey-2.0.3,编译ningx时添加此模块即可。

由于服务其他业务需要,所以nginx编译了lua模块,所以就想通过lua来实现下载服务器的防盗链功能(通过lua的Nginx模块lua_nginx_module、这里不再详细介绍配置过程),这样就可以免去了accesskey模块。原理就是生成经过处理过的下载链接,然后下载服务器在处理这个下载链接,成功则下载,失败则阻止。下面就是详细的配置实例:

一、在下载页面生成链接的nginx配置

download.tuohang.net的配置:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server 
listen    80; 
server_name download.tuohang.net; 
index index.htm index.html; 
root /data/www/download; 
ssi on; 
location / 
set_by_lua $downkey  
return ngx.md5(“encryption” .. ngx.var.remote_addr .. “suffix”) 
}

注意:要开启ssi才能在html页面中获取nginx自定义变量downkey,这样才能生成经过处理的url,其中字符串encryption和suffix为自定义的,可随便改其他字符,目的是为了生成别人不容易猜解的串。

测试index.html代码:

二、下载服务器nginx配置:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server 
listen    80; 
server_name down.tuohang.net; 
index index.htm index.html; 
root /data/www/down; 
limit_conn  one 1; 
set $limit_rate 1000k; 
location / 
set_by_lua $foo  
if string.sub(ngx.var.uri, 2, 33) == ngx.md5(“encryption” .. ngx.var.remote_addr .. “suffix”) then 
return 1
else
return 0
end 
if ($foo = 1) 
rewrite “^/([0-9a-z]{32})(.*?)$”    $2 break; 
if ($foo = 0) 
rewrite ^/ http://download.tuohang.net/404.htm redirect; 
}

这样把链接复制给另外一台机器后,就会打开提示错误页面。

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:在 Linux 上使用 gImageReader 从图像和 PDF 中提取文本

2023-5-2 3:43:39

建站知识

小知识:详解Nginx中HTTP的keepalive相关配置

2023-5-2 4:00:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索