在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
图片服务器不符合安全 主要参考链接:
一、安装 需要安装的组件:LuaJIT-2.0.4、ngx_devel_kit、lua-nginx-module、lua-resty-redis-master。前3个令nginx支持lua,而且需要编译nginx。第4个让lua能访问redis。
二、代码 nginx的配置文件,此处仅用了access模块,其他content、head等可以根据实际情况使用 location ^~ /group1/M01/ { default_type 'text/html'; access_by_lua_file /etc/nginx/lua/lib/access.lua; proxy_pass http://filesvr; proxy_redirect default; port_in_redirect off; } lua脚本,此处仅连接redis,检查是否存在该token,未做进一步权限鉴别。 local function close_redis(red) if not red then return end local ok,err = red:close(); if not ok then ngx.say("close redis error : ",err); end end local redis = require("redis"); local red = redis:new(); red:set_timeout(1000) local ip = "redis srv ip" local port = 6379 local ok,err = red:connect(ip,port) if not ok then --500 ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end local res, err = red:auth("passwd") if not res then --500 ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end local ok, err = red:select(3) if not ok then --500 ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end local token = ngx.var.arg_token if token ~= nil and token ~= "" then local res, errs = red:exists(token) close_redis(red) if res == nil then --500 ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end if res==0 then --401 ngx.exit(ngx.HTTP_UNAUTHORIZED) else return end else --403 ngx.exit(ngx.HTTP_FORBIDDEN) end
三、坑 仅记录耗时间最久的几个:
|
请发表评论