Nginx + Lua + 共享内存实现动态查询(简单例子)

OpenResty(Lua+Redis实现动态封禁IP 的方案,确实可以将流量挡在 Nginx 和 Redis 层,从而利用nginx和redis适合高并发的特点,保护后端了服务。如果需要更高的性能和可靠性,推荐使用防火墙/WAF相关手段,将流量挡在网络层面。在http模块里配置是全局生效,在特定的server块里配置是特定server块里的生效,这里我设置全局生效。(日志记录允许通过的不允许的配置,选择一个lua脚本配置即可。当访问浏览器这个服务的一个不存在的页面时,可以看到。修改下属配置,一般就在第2行,修改完成后保存退出。使用工具模拟高频率请求。 阅读详情

Nginx 配置。

lua_package_path "/usr/local/share/luajit-2.0.2/jit?.lua;;";  
lua_shared_dict devicedb 45m;   
    location /query {  
       default_type 'text/plain';  
       content_by_lua '  
                local args = ngx.req.get_uri_args()  
                local devicetype = args["device"]  
                local devicedb = ngx.shared.devicedb  
                local res = devicedb:get(devicetype)  
  
                ngx.say(res)  
           ';  
    }  
  
    location /update {  
        default_type 'text/plain';  
        content_by_lua '  
                local devicedb = ngx.shared.devicedb  
  
                for item in io.lines("/usr/local/nginx-1.4.2/data/rule.txt") do  
                    _,_,device_type, device_rule = string.find(item, "^(%a+)--(%a+)$")  
                    devicedb:set(device_type,device_rule)  
                end  
  
                ngx.say("ok")              
           ';  
    }  

rule.txt文件格式。

SAMSUNG--samRule  
APPLE--appRule  
XIAOMI--xiaRule  
步骤1,访问/update,更新共享内存devicedb

步骤2,访问query?device=XIAOMI,返回xiaRule

步骤3,修改rule.txt,将xiaRule改为xiaRuleaaaa

步骤4,访问/update,更新共享内存devicedb

步骤5,访问query?device=XIAOMI,返回xiaRuleaaaa


内网响应时间在5~10ms。


参考文章:

http://my.oschina.net/766/blog/158972

http://haili.me/archives/722.html



基于OpenResty与共享内存实现Nginx动态IP威胁情报集成方案 在Web安全防护领域,IP威胁情报是识别和阻断恶意流量的关键技术手段。其核心原理是通过实时更新的恶意IP数据库,对访问来源进行信誉评估。这项技术的价值在于将安全防御从被动响应升级为主动拦截,在攻击流量到达应用服务器前就进行处置,有效缓解CC攻击、暴力破解和恶意爬虫等威胁。典型的应用场景包括电商、金融、游戏等高安全要求行业的公网业务入口防护。本文以Nginx集成方案为例,详细阐述了如何利用OpenResty的Lua扩展能力和共享内存机制,构建高性能的动态情报同步与实时拦截系统,其中涉及IP分桶存储优化和CID 阅读详情

相关推荐

Nginx基础教程(115)Nginx OpenResty开发之lua-resty库:别再用Nginx当“静态老干部”了!OpenResty+Lua秒变“全能特种兵”,实战代码直接抄!

想象一下,你的网站突然遭到一批恶意IP的疯狂攻击,传统的Nginx配置只能让你手忙脚乱地修改配置文件、重载服务。但如果你使用了OpenResty,只需几行Lua代码,就能实时从Redis读取黑名单,自动拦截恶意请求。 更妙的是,这个过程中Nginx的其他工作完全不受影响——这就是OpenResty赋予Nginx动态超能力。

jxf_jxfcsdn的博客 902

NGINX 结合 lua 动态修改upstream

具体思路是:  1 > 利用lua中 "lua_shared_dict" 指令开辟一个共享内存空间; 2> 通过API动态根据key值&参数修改 upstream  (这里使用 host 作为key); 3> 利用 proxy_pass 可使用变量特性及lua指令 "set_by_lua" 动态修改当前 upstream 变量即可; 以下是利用 qq.com 作为示例: http

奋斗中拥有 2万+

5、数据计算与处理技巧全解析

本文深入解析了Tableau中的多种数据计算与处理技巧,涵盖LOD计算、日期与字符串处理、计数优化、数据混合限制及自定义总计等核心内容。通过实际案例和流程图,系统讲解了各技巧的应用场景、实现步骤与注意事项,并提供性能优化建议和常见问题解答,帮助用户提升数据分析效率与可视化精度。同时展望了未来数据计算技术的发展趋势,是Tableau用户进阶必备的全面指南。

peach的博客 60

nginx lua查看共享内存使用情况代码

local ngx_shared = ngx.shared local dicts = { "token_dict","config_dict","ip_dict","limit_ip_dict","lock_dict","hit_url_dict","nginx_dict","stream_dict","sent_dict","syslog_dict" } local re = {} for _,v in ipairs(dicts) do if ngx_shared[v] then ...

focus on security 2295

nginxlua_shared_dict命令

lua_shared_dict设置一块共享内存区域,可以被各个worker共享 写在http模块中 比如下面这个,表示设置了一块共享的内存区域,大小为10m. lua_shared_dict sdata 10m; 设置了这里面就可以存数据了,怎么读写数据呢?有set和get方法,直接可以往这块共享内存写数据 测试一下 测试代码写在外部lua文件中,这里引入一下 server { listen 80; server_name localhost;

鸭梨的博客 9366

Lua使用 lua_shared_dict 共享内存和进程间变量、lua脚本中实现美化打印显示table的函数、以及Nginx服务器非覆盖安装lua扩展的方法

共享内存就是在内存块中分配出一个空间,让几个不相干的进程都能访问存储在这里面的变量数据,实际我们用过的redis,memcache也具有共享内存的意义,redis,memcache等是更高级的可跨服务器的共享内存,在lua中使用共享内存也非常简单。语法:lua_shared_dict 意义:定义一块名为name的共享内存空间,内存大小为size。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1819

nginx lua调用php,Nginx + Lua + 共享内存实现动态查询简单例子

Nginx 配置。lua_package_path "/usr/local/share/luajit-2.0.2/jit?.lua;;";lua_shared_dict devicedb 45m;location /query {default_type 'text/plain';content_by_lua 'local args = ngx.req.get_uri_args()local de...

weixin_29172201的博客 237

Nginx + Lua + 共享内存实现动态查询

lua_package_path "/usr/local/share/luajit-2.0.2/jit?.lua;;";   lua_shared_dict devicedb 45m;        location /query {          default_type 'text/plain';          content_by_lua '             ...

ronon77的专栏 716

实战:Nginx+Lua实现流量跨机房分发

某业务快速增长,自建IDC机房服务器逐渐过保,服务扩容和数据容灾都面临巨大挑战。因业务的复杂性,基于“稳”字当头考虑,最终制定了依据业务体量以及影响范围逐步迁移上云的演进方案。该方案将造成在很长一段时间内IDC与公有云共存的混合架构,在一定程度上增加了系统架构的复杂度。首先面临的就是流量分发的问题...

IT孟德的编程世界 2365

Nginx 通过 Lua + Redis 实现动态封禁 IP

背景 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。对于黑名单之内的 IP ,拒绝提供服务。 架构 实现 IP 黑名单的功能有很多途径:1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求;2、在 Web Server 层面,通过 Nginx 自身的 deny 选项 或者 lua 插件...

weixin_34223655的博客 87

如何在Nginx实现动态封禁IP?三种主流方案

本文对比了三种Nginx动态封禁IP的方案:1)原生Nginx通过geo和map模块结合配置文件,需reload生效;2)OpenResty+Lua实现毫秒级实时封禁,支持API管理;3)fail2ban基于日志分析自动封禁,适合防御扫描爆破。方案一简单可靠但需reload,方案二适合自动化系统,方案三适用于安全防护场景。建议根据实际需求选择:手动封禁选方案一,程序化调用选方案二,自动防御选方案三。

码到三十五 6916

nginx:如何在Nginx配置中使用Lua脚本

在阿里云API网关和字节跳动边缘计算平台中,Nginx+Lua(OpenResty)的组合已成为处理复杂业务逻辑的标准解决方案。我们将深入剖析其核心机制。

weixin_43290370的博客 2393

NginxLua 设计黑白名单

通过结合 NginxLua 和 Redis,我们可以实现一个灵活且高效的黑白名单机制。该机制不仅能够有效管理访问权限,还能提供良好的性能和安全性。

学习,分享一直在路上 1437

Nginx Lua脚本动态拦截恶意爬虫对IndexTTS 2.0的攻击

针对IndexTTS 2.0等高耗能AI接口频繁遭受爬虫攻击的问题,采用Nginx结合Lua脚本在反向代理层实现动态防护。通过UA特征识别与IP频次统计,毫秒级阻断恶意请求,有效降低GPU资源消耗。方案无需额外中间件,兼容现有架构,适合中小团队快速部署,兼顾性能与灵活性。

weixin_42311427的博客 1323

网站首页高可用_nginx+lua——缓存预热与nginx限流

文章目录

zzhou——blog 5907

Nginx Lua 集成及配置使用详解

【代码】Nginx Lua 集成及配置使用详解。

学亮编程手记 592

YOLO11训练中的批量大小(Batch Size)选择策略:分析Batch Size对训练速度、显存占用和模型性能的影响

在深度学习训练过程中,Batch Size(批量大小)是一个至关重要的超参数,它指的是单次迭代中用于更新模型权重的样本数量。简单来说,当我们训练神经网络时,不会一次性将所有数据喂给模型,而是将数据分成若干个小批次(batch),每个批次包含一定数量的样本,这个数量就是Batch Size。 Batch Size的核心作用在于平衡训练效率与模型性能。较小的Batch Size意味着每次更新权重时参考的信息较少,可能导致训练过程更加随机,但有时能带来更好的泛化能力;较大的Batch Size则能提供更稳定的梯

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 266

中国县域数字经济政策词频数据-最新整理出炉.zip

一、资源特点全新力作:今年精心打造,人工细细打磨,品质上乘。权威精准:数据来源,准确靠谱,值得信赖。品质无忧:绝无数据造假,品质有保障,放心使用。二、适用人群学生:在校专科生、本科生、研究生,助力学业各个环节。教研人员:大学教师和学术科研工作者,为教学科研添力。三、适用专业社科经济:经济学、社会学专业适用。规划管理:地理学、城市规划,以及商业、工商管理专业皆可使用。

上一篇: Lua中的Hook机制
下一篇: Lua ---- LFS库的使用
hellochenlu
博客等级 码龄14年 97粉丝 184原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值