php控制静态文件访问,用Lua控制Nginx静态文件的url访问权限

安装LuaJIT

tar zxf LuaJIT-2.1.0-beta2.tar.gz

cd LuaJIT-2.1.0-beta2

make PREFIX=/usr/local/luajit

make install PREFIX=/usr/local/luajit

下载ngx_devel_kit模块

tar -xzvf v0.3.0.tar.gz # 不需要安装

下载lua-nginx-module模块

tar -xzvf v0.10.7.tar.gz # 不需要安装

重新编译安装Nginx

nginx -V查看已经编译的配置

nginx -V

输出结果:

--user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module

进入Nginx源码目录,重新编译,加上以下参数(注意以下module解压路径)

--with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/path/to/ngx_devel_kit-0.3.0 --add-module=/path/to/lua-nginx-module-0.10.7

完整编译配置如下:

# 设置环境变量

export LUAJIT_LIB=/usr/local/luajit/lib

export LUAJIT_INC=/usr/local/luajit/include/luajit-2.1

# 配置

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=/home/vagrant/ngx_devel_kit-0.3.0 --add-module=/home/vagrant/lua-nginx-module-0.10.7

# 编译安装

make -j2

make install

配置Nginx.conf

在在/usr/local/nginx/conf/nginx.conf中的server节加入如下代码:

location ^~ /uploads/ {

access_by_lua '

local secret_key = "prefix_eu56#42dfd6g*@"

local diff_time = 10

local local_time = ngx.time()

local timestamp = tonumber(ngx.var.arg_timestamp)

local token = ngx.var.arg_token

if (timestamp == nil or token == nil) then

ngx.exit(403)

elseif (timestamp + diff_time < local_time) then

ngx.exit(403)

end

local access_token = ngx.md5(timestamp..secret_key)

if token == access_token then

return true

else

ngx.exit(403)

end

';

}

重启Nginx

service nginx restart

检查生效状态

权限判断规则:

1、URL必须包含timestamp和token参数 2、timestamp为秒级时间戳,10s之内时间有效 3、token为md5(timestamp+secret_key)

时间过期输出403 Forbidden 验证成功返回文件。

文档资料

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值