nginxlua文件服务器权限,通过lua来配置实现Nginx服务器的防盗链功能

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

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

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

download.jb51.net的配置:

server

{

listen 80;

server_name download.jb51.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配置:

server

{

listen 80;

server_name down.jb51.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.jb51.net/404.htm redirect;

}

}

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值