下载服务器时常被人盗链,时间久了导致服务器大量资源浪费,由于服务器使用nginx做为web服务器。nginx的防盗链方法有很多,可以使用现成的防盗链模块nginx-accesskey-2.0.3,编译ningx时添加此模块即可。
由于服务其他业务需要,所以nginx编译了lua模块,所以就想通过lua来实现下载服务器的防盗链功能(通过lua的Nginx模块lua_nginx_module、这里不再详细介绍配置过程),这样就可以免去了accesskey模块。原理就是生成经过处理过的下载链接,然后下载服务器在处理这个下载链接,成功则下载,失败则阻止。下面就是详细的配置实例:
一、在下载页面生成链接的nginx配置
download.zzvips.com的配置:
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
server
{
listen 80;
server_name download.zzvips.com;
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.zzvips.com;
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.zzvips.com/404.htm redirect;
}
}
} |
这样把链接复制给另外一台机器后,就会打开提示错误页面。
相关文章
猜你喜欢
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-27 81
-
2025-05-25 55
-
Spring boot通过HttpSessionListener监听器统计在线人数的实现代码
2025-05-29 35 -
2025-05-25 64
-
2025-05-29 39
热门评论

