1 本文系统环境:
安装openresty(nginx),可参考:
test@ubuntuserver:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
test@ubuntuserver:~$ uname -a
Linux ubuntuserver 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
test@ubuntuserver:~$ nginx -v
nginx version: openresty/1.25.3.1
2 nginx 配置文件共享服务器静态资源
#修改配置
sudo vi /usr/local/openresty/nginx/conf/nginx.conf
location /file {
autoindex on;
autoindex_localtime on;
alias /data/www;
charset utf-8,gbk;
}
#热启动nginx
sudo systemctl reload nginx.service
#放一张图片测试 nginx文件服务器,可以直接访问
3 nginx + lua 开始鉴权访问静态资源
鉴权接口,访问静态资源需要带上时间戳(timestamp)和token参数;timestamp为毫秒时间戳,75s之内时间有效(失效时间可以自定义);token等于md5(timestamp+secret_key);时间过期,访问返回403 Forbidden;验证成功可以正常访问文件。可以结合前端开发一起授权访问文件服务器。本文只做测试(⊙﹏⊙)
#增加以下3行
sudo vim /usr/local/openresty/nginx/conf/nginx.conf
access_by_lua_file /usr/local/openresty/nginx/lua/fileaccess.lua;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
#lua 文件
cat /usr/local/openresty/nginx/lua/fileaccess.lua
package.path = '/usr/local/openresty/lualib/resty/?.lua;'
local args = ngx.req.get_uri_args()
local token1 = args["key"]
local timestamp = args["timestamp"]
local secret_key = "prefix_wym666"
local diff_time = 120000
ngx.update_time()
local local_time = ngx.time() * 1000
local timestamp1 = tonumber(timestamp)
if (timestamp1 == nil or token1 == nil) then
ngx.exit(403)
elseif (timestamp1 + diff_time < local_time) then
ngx.exit(403)
end
local access_token = ngx.md5(secret_key..timestamp1)
if token1 == access_token then
return true
else
ngx.exit(403)
end
#热启动nginx
sudo systemctl reload nginx.service
4访问测试
#直接访问返回
#URL 带上timestamp和Token 访问正常
#时间超过75秒,访问看,返回403
5 nginx 文件服务器 ,通过lua 编写接口来鉴权,访问需要授权,如此一定程度,提高安全性
欢迎大家一起交流, 可以加我的微信(⊙﹏⊙)
标签:Web,lua,访问,timestamp,nginx,openresty,local,鉴权 From: https://blog.csdn.net/tonyhi6/article/details/139231015