最新要闻
- 环球要闻:背景太假哥疆域阿力木捡的狗“狼里狼气” 网友出谋划策辨认
- 【环球新视野】极氪X官宣4月12日上市:全能SUV 零百加速3秒级
- 焦点热文:我国构建世界首个番茄超泛基因组:能让番茄更好吃、产量多6成
- 全球播报:男女配合当街开井盖用勺挖地沟油被网友拍下引围观:行为太恶劣 应严惩
- 天天微资讯!林俊杰“炒房”浮亏91%?元宇宙泡沫的冰山一角
- 天天动态:一不注意就被坑,家电“潜规则”早知道早好
- 【新要闻】128核心Arm处理器能跑Windows!还能配NVIDIA显卡
- 时讯:新疆和硕:田间地头 话两会
- 【天天速看料】马龙惊魂3-2拒绝一轮游,与小林再迎老少对决!国乒首日狂走钢丝
- 在米其林餐厅找罪受?人均8千元餐厅疑发生食物中毒
- 世界热点!张艺谋宣布将拍网剧《英雄联盟》!第一次 想拍个不一样的
- FSR、DLSS谁更好?26款游戏PK:AMD居然0胜!
- 旅游专列来啦具体详细内容是什么
- 中国新能源汽车在欧洲火了:每10辆就有1辆来自中国
- 程序员午休时健身猝死 被认定工伤 法院:属于在岗状态
- 比亚迪车主用木头手工还原汉EV:前后双电机 真能跑
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天观速讯丨通过 lua 进行 nginx redis 访问控制
Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等。 |
1. Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等。
2. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的需求。
(资料图片仅供参考)
3. Nginx处理请求的过程一共划分为11个阶段,分别是:
post-read、server-rewrite、find-config、rewrite、post-rewrite、 preaccess、access、post-access、try-files、content、log.
在openresty中,可以找到:
set_by_lua,access_by_lua,content_by_lua,rewrite_by_lua等方法。
那么访问控制应该是,access阶段。
解决方案按照正常的逻辑思维,我们会想到的访问控制方案如下:
1.检测是否被forbidden?=》是,forbidden是否到期:是,清除记录,返回200,正常访问;否,返回403;=》否,返回200,正常访问
2.每次访问,访问用户的访问频率+1处理
3.检测访问频率是否超过限制,超过即添加forbidden记录,返回403
这是简单地方案,还可以添加点枝枝叶叶,访问禁止时间通过算法导入,每次凹曲线增加。
实现方法首先为nginx添加vhost配置文件,vhost.conf部分内容如下:
lua_package_path "/usr/local/openresty/lualib/?.lua;;";#告诉openresty库地址lua_package_cpath "/usr/local/openresty/lualib/?.so;;";error_log /usr/local/openresty/nginx/logs/openresty.debug.log debug;server { listen 8080 default; server_name www.ttlsa.com; root /www/openresty; location /login { default_type "text/html"; access_by_lua_file "/usr/local/openresty/nginx/lua/access_by_redis.lua";#通过lua来处理访问控制 }}
Access_by_redis.lua
参考了下v2ex.com的做法,redis存储方案只做简单地string存储就足够了。key分别是:
用户登录记录:user:127.0.0.1:time(unix时间戳)
访问限制:block:127.0.0.1
先连接Redis吧:
local red = redis:new()function M:redis()red:set_timeout(1000)local ok, err = red:connect("127.0.0.1", 6379)if not ok thenngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)endend
按照我们的逻辑方案,第二步是,检测是否forbidden,下面我们就检测block:127.0.0.1,如果搜索到数据,检测时间是否过期,未过期返回403,否则直接返回200:
function M:check1()local time=os.time()--system timelocal res, err = red:get("block:"..ngx.var.remote_addr)if not res then-- redis errorngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) --redis get data error endif type(res) == "string" then --if red not null then type(red)==stringif tonumber(res) >= tonumber(time) then --check if forbidden expiredngx.exit(ngx.HTTP_FORBIDDEN)--ngx.say("forbidden")endend}
接下来会做检测,是否访问频率过高,如果过高,要拉到黑名单的,
实现的方法是,检测user:127.0.0.1:time的值是否超标:
function M:check2()local time=os.time()--system timelocal res, err = red:get("user:"..ngx.var.remote_addr..":"..time)if not res then-- redis errorngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) --redis get data errorendif type(res) == "string" thenif tonumber(res) >= 10 then -- attack, 10 times request/sred:del("block:"..self.ip)red:set("block:"..self.ip, tonumber(time)+5*60 ) --set block timengx.exit(ngx.HTTP_FORBIDDEN)endendend
最后呢,还要记得,把每次访问时间做一个自增长,user:127.0.0.1:time:
function M:add()local time=os.time()--system timeok, err = red:incr("user:"..ngx.var.remote_addr..":"..time)if not ok thenngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) --redis get data errorendend
那么,测试,强刷几次浏览器,发现过一会,返回了403,ok,搞定。
原文来自:http://www.ttlsa.com/nginx/nginx-lua-redis-access-frequency-limit/
本文地址:https://www.linuxprobe.com/lua-access-control-redis.html编辑:杨鹏飞,审核员:岳国帅
本文原创地址:https://www.linuxprobe.com/lua-access-control-redis.html
关键词:
天天观速讯丨通过 lua 进行 nginx redis 访问控制
焦点热议:多项数据向好 交通物流加速“跑起来”
环球要闻:背景太假哥疆域阿力木捡的狗“狼里狼气” 网友出谋划策辨认
【环球新视野】极氪X官宣4月12日上市:全能SUV 零百加速3秒级
焦点热文:我国构建世界首个番茄超泛基因组:能让番茄更好吃、产量多6成
全球播报:男女配合当街开井盖用勺挖地沟油被网友拍下引围观:行为太恶劣 应严惩
天天微资讯!林俊杰“炒房”浮亏91%?元宇宙泡沫的冰山一角
【时快讯】学系统集成项目管理工程师(中项)系列05_配置管理
天天动态:一不注意就被坑,家电“潜规则”早知道早好
今日热文:Spring5课堂笔记
Java8 Stream流式编程
【新要闻】128核心Arm处理器能跑Windows!还能配NVIDIA显卡
时讯:新疆和硕:田间地头 话两会
maptalks点线面图形样式设置经验总结
【天天速看料】马龙惊魂3-2拒绝一轮游,与小林再迎老少对决!国乒首日狂走钢丝
在米其林餐厅找罪受?人均8千元餐厅疑发生食物中毒
世界热点!张艺谋宣布将拍网剧《英雄联盟》!第一次 想拍个不一样的
环球新动态:Vulnhub Mercy靶场 Walkthrough
FSR、DLSS谁更好?26款游戏PK:AMD居然0胜!
环球速看:AI 史话
每日讯息!Weex原理及架构剖析
旅游专列来啦具体详细内容是什么
中国新能源汽车在欧洲火了:每10辆就有1辆来自中国
【时快讯】WebKit三件套(3):WebKit之Port篇
每日速看!HBase在进行模型设计时重点在什么地方?一张表中定义多少个Column Family最合适?为什么?
环球资讯:第136篇:Three.js基础入门动画API:setInterval 与 requestAnimationFrame的区别
程序员午休时健身猝死 被认定工伤 法院:属于在岗状态
比亚迪车主用木头手工还原汉EV:前后双电机 真能跑
每日速讯:WebKit三件套(1):WebKit之WebCore篇
焦点关注:C盘爆满的解决方法,不用删除文件,使用分区助手无损增加内存
简讯:招标活动法律保障工作实务指南 2016年版
锐龙7 7800X3D配A620主板 性能损失多少?实在没想到
天天微头条丨成都升温 千足虫满街爬:专家科普小心毒臭液
全球最大盗版电子书网站Z-Library被封后复活:路子更野了!要共享纸质书
速读:Steam排名第一!GTX 1650亮机卡火爆断货:RTX 2070紧急变身救场
【天天速看料】Vue——patch.ts【十四】
浏览器史话中chrome霸主地位的奠定与国产浏览器的割据混战
Vue开发规范
天天速递!只剩Windows版了!B站正式宣布UWP版停止维护
环球时讯:洛阳上演汉服秀 网友偶遇唐僧师徒四人坐地铁去“取经”
男子体内惊现小树苗!都长到5厘米高了
环球今亮点!或为AR眼镜新品!小米神秘“新礼物”明早10点正式亮相
今热点:解放军环台岛战备警巡和演习,专家:或成惩戒“台独”新模式
天天通讯!Linux常用操作命令总结
iOS Modern Collection View
线段树好题! P2824 [HEOI2016/TJOI2016]排序 题解
每日动态!小米寄修服务“史诗级”提升:新增进度可视化功能
天天资讯:第7章_InnoDB数据存储结构
天天快报!css过去及未来展望—分析css演进及排版布局的考量
每日关注!微信小程序 开发,uni-app 开发简介
今日报丨朗新科技:拟提前赎回“朗新转债”
今日观点!男子网购耐克鞋却挂着李宁的吊牌 网友:联名款?
数组的算法
超同年漫威大片近3倍!新海诚《铃芽之旅》国内票房达7亿
VUE-Antd开发,validate规则校验第一次为空,后面无论怎么输入都显示不可为空
环球新消息丨上海国创科技产业创新发展中心理事长黄岩:人工智能会像手机一样进入我们的日常生活
每日聚焦:青春回来了!电影《灌篮高手》流川枫角色预告出炉:4月20日国内上映
世界今亮点!暴雪战网遭遇DOSS攻击!多款游戏无法正常登录
世界聚焦:2023年3月随笔暨第1季度总结
世界热资讯!ASP.NET Core MVC 从入门到精通之接化发(一)
【全球聚看点】快速幂算法
私有化部署chatGPT,告别网络困扰
新车一超过60km/h就耳朵疼 车主:找了20多个人开都如此
Win11新版最快5月推送:微软确认Moment 3更新
【全球热闻】富二代开保时捷碰瓷:专挑开豪车酒驾的敲诈 “赚了”30多万
聚焦:五粮液董事长曾从钦:在“时与势”中勇担使命,在“稳与进”中拓展空间,在“个与众”中升级维度
今年1号台风“珊瑚”下周或生成 预计2023年登陆我国的台风至少6个
夏日必备!楠木之舟EVA拖鞋19.9元:轻盈高回弹
男士洗脸专属大牌 妮维雅控油、祛痘洗面奶大促:不到20
世界最新:ChatGPT火爆 元宇宙房产崩盘!林俊杰买虚拟地产浮亏91%
岚图汽车1V4 “开火”保时捷、蔚来、奥迪、极氪!结果尴尬:无一车企回应
环球实时:4月09日10时江苏南通疫情最新消息 4月09日10时江苏南通今日确诊人数
让民生福祉更有“数”——中国电子政务论坛聚焦数字政府建设
【天天播资讯】为啥国产电动车在欧洲不好卖?海外汽车大V给出5点原因
环球热讯:今天国际护胃日 年轻人为啥会被胃癌盯上?胃病转向胃癌有5个信号
全球今头条!通用自动驾驶汽车撞上公交车 300辆无人出租车被召回
沙尘暴蓝色预警来了:北方将迎沙尘天气!官方分享防御指南
“码农”劳动争议频发 厘清责任依法“护体”
焦点快播:存碰撞风险!特斯拉美国召回422辆Model 3:前悬架连杆有隐患
新资讯:朱晓彤 总算升职了!将在特斯拉墨西哥工厂获得一张新床
环球资讯:有人用ChatGPT月入十万了!70+款免费AI工具大搜罗
每日热门:sip消息拆包原理及组包流程
每日聚焦:超2250万台(套)各型装备投入春耕—— 农机化支撑粮食稳产增产
微头条丨小米14曝光:屏幕边框窄到没朋友 华星供货
贝克汉姆回复王濛大胆表白 感谢你的赞美:后者曾公开表示因为帅喜欢他
【天天时快讯】选台式机还是游戏本?13代酷睿旗舰处理器性能PK
环球报道:传音Tecno Camon 20 Premier曝光:天玑1200、五边形镜组
天天看点:广东白云技师学院短训班专业设置_广东白云技师学院
今日热讯:Vulnhub Bravery靶机 Walkthrough
焦点观察:69岁成龙说我还能打还能跳:是个奇迹
1999元神机诞生!Redmi Note 12 Turbo成了:用户好评率接近100%
天天快消息!Golang常用库之UUID
如何成为一名优秀的工程师?顶级程序员的5点建议
全球报道:曾称失控都是踩错单踏板!网友晒特斯拉新OTA 想要的制动恢复两档可选
全球播报:女子乘高铁把脚放前排乘客头上:狡辩称”鞋底不脏“
天天快资讯丨碱性食物有哪些_十大碱性食物排名
.Net Core Console&Generic HostBuilder
用阳光代替WiFi信号连网 沙特科学家这成果亮了
世界热点!【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(下)
世界速讯:电影《龙马精神》上映!刘德华清唱生日快乐歌祝福成龙