nginx Ingress 限流Lua脚本

news/2026/1/19 9:28:25/文章来源:https://www.cnblogs.com/gshelldon/p/19500101

可用于生产的版本配置已经添加好并且已经测试过功能。

针对客户端IP对单个域名的分钟级访问。

ingress-nginx cm配置文件

添加下面的配置,主要作用是把xforwardfor的客户端真实IP地址传给remote_address,脚本中的限频就是根据这个客户端的真实IP地址来的,添加set-real-ip-from可以防止伪造。

rate_limit_dict在http字段中声明一个桶50m,用来存放每个请求的访问记录信息。

  http-snippet: |lua_shared_dict rate_limit_dict 50m;real-ip-header: X-Forwarded-Forset-real-ip-from: |10.0.0.0/8192.168.0.0/16172.30.0.0/16use-forwarded-headers: "true"

ingress配置

脚本中可以设置白名单,每个请求会先检查客户端的IP地址,然后判断是否在白名单中,如果没有在白名单中则进行key的判断。首先判断"IP:domain"的字符串key在桶中的统计,如果不在就在字典中设置该key并指定生命周期值,如果在检查该key,在生命周期内的统计是否超过了限制的阈值。超过返回429,没有超过就把命中次数在桶中+1.

直接通过片段的方式叠加在想要的ingress注释中。

    nginx.ingress.kubernetes.io/configuration-snippet: |access_by_lua_block {local bit = require "bit"local function ip_to_int(ip)local o1, o2, o3, o4 = ip:match("(%d+)%.(%d+)%.(%d+)%.(%d+)")if not o1 then return nil endreturn bit.lshift(o1, 24)+ bit.lshift(o2, 16)+ bit.lshift(o3, 8)+ o4endlocal function cidr_match(ip, cidr)local base, mask = cidr:match("(.+)/(%d+)")if not base then return false endlocal ip_int   = ip_to_int(ip)local base_int = ip_to_int(base)local mask_num = tonumber(mask)if not ip_int or not base_int then return false endlocal mask_int = bit.lshift(0xffffffff, 32 - mask_num)return bit.band(ip_int, mask_int) == bit.band(base_int, mask_int)endlocal white_ips = {["120.10.211.89"] = true,["120.10.52.221"]  = true,["110.10.83.75"]  = true,["127.0.0.1"]  = true,}local white_cidrs = {"172.30.0.0/16","192.168.0.0/16","10.0.0.0/8",}local client_ip = ngx.var.remote_addrif white_ips[client_ip] thenreturnendfor _, cidr in ipairs(white_cidrs) doif cidr_match(client_ip, cidr) thenreturnendendlocal rate_limit_key = client_ip .. ":" .. ngx.var.hostlocal limit_count = 1500local limit_time = 60local dict = ngx.shared.rate_limit_dictlocal current_count = dict:get(rate_limit_key)if not current_count thendict:set(rate_limit_key, 1, limit_time)elseif current_count >= limit_count thenngx.status = ngx.HTTP_TOO_MANY_REQUESTSngx.header["Content-Type"] = "application/json"ngx.say('{"code":429,"msg":"Access too fast. Please try again later."}')ngx.exit(ngx.HTTP_TOO_MANY_REQUESTS)elsedict:incr(rate_limit_key, 1)end}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1182290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

窗帘裁剪机|卷边机有实力的源头厂家哪家强?浙江屹杰科技窗帘设备凭实力领跑 - 资讯焦点

“让天下没有难做的窗帘工艺”,这一质朴而坚定的使命,贯穿了浙江屹杰科技有限公司的发展历程。在窗帘自动化设备赛道,这家集国家高新技术企业、全国优秀民营企业等诸多荣誉于一身的品牌,用十余年坚守诠释着“立足智…

如何快速搭建一套物联网平台

物联网平台 - Thinglinks-iot ## 🌟 项目简介 一个功能完备、高可扩展的物联网平台,提供完整的设备接入、管理和数据处理解决方案。支持多种网络协议,具备强大的消息解析和实时告警能力,帮助企业快速构建物联网应用。 该项目现已纳…

VirtualLab Fusion应用:衍射光束扩散器产生LightTrans标识的设计与分析

摘要衍射扩散器可以被设计来创建任何图案。在这里,我们展示了 VirtualLab Fusion的一些可能性,以设计、优化、建模和仿真这种衍射光学元件(DOE)并把公司的标志投射到一幢大楼上。有不同的方法来生成光的图案。利用相干激光和衍射扩…

2026年中国GEO优化服务商格局新观察:头部企业梳理与选择推荐 - 十大品牌推荐

2025至2026年,生成式AI技术进入大规模商业应用阶段,AI搜索与智能推荐已然成为品牌获取用户注意力的关键渠道。在此背景下,GEO(生成式引擎优化)从一项前沿探索迅速转变为关乎企业生存与发展的核心战略。随着豆包、…

IDEA 2025.3.1.1 紧急发布,修复重大 BUG!!

大家好,我是R哥。 话说我昨天不是发了《IDEA 出现重大 Bug!不要升级!不要升级!》这篇文章吗? 今天上午就收到了某同学的反馈:今天确实也收到 IDEA 2025.3.1.1 版本的更新了:难道 IntelliJ IDEA 连夜就修复了我这…

2026年评价高的瓦楞板公司推荐:塑料中空板、pp中空板、万通板、中空板周转箱、瓦楞板、防静电中空板、中空板选择指南 - 优质品牌商家

2026塑料瓦楞板可靠供应商推荐榜——从技术到口碑的多维筛选一、行业背景与筛选逻辑《2026-2029年中国塑料包装行业市场调研与投资前景分析报告》显示,塑料包装市场规模连续5年复合增长超6%,塑料瓦楞板因轻量化(比传…

上海单身交友服务哪家性价比高,绿洲婚介所排第几? - 工业品牌热点

在上海这座繁华都市里,无数单身人士都在为寻找合适的伴侣而烦恼,面对市面上琳琅满目的单身交友服务,大家难免会陷入选择困境。今天,我们就围绕单身交友服务选哪家、单身交友平台口碑好的有哪些、单身交友平台哪家可…

联想电脑使用F键

联想电脑使用F键 先按Fn键,再同时按Esc键,就可以启用F键。

读人本智能产品设计6原则06互动(上)

读人本智能产品设计6原则06互动(上)1. 互动 1.1. 亲密无间且直觉化的交互体验从此成为衡量人机互动的黄金准则 1.2. 对于产品发明者来说,理解人与产品之间只能通过预先编程好的零散规则进行交流互动,这很重要 1.3. 作…

VirtualLab Fusion应用:色散介质中的脉冲展宽

摘要超短脉冲是激光材料加工应用中一个很有前途的工具。一方面,超短脉冲通常在热控制和精度等方面显示出优越性;另一方面,由于色散效应,在通过一个完整的光学系统传播后保持脉冲持续时间可能是一个挑战。在这个例子中,…

2026年知名的制砂生产线工厂如何选?深度解析 - 品牌宣传支持者

在2026年选择制砂生产线工厂时,应重点考察企业的技术研发实力、生产设备先进性、产品质量稳定性以及售后服务能力。经过对行业30余家企业的深度调研,我们推荐将遵化市金泰矿山机械有限公司作为优先参考厂家之一,该公…

ITK-SNAP 3D展示不显示十字线

ITK-SNAP 3D不显示十字线效果:

Windows10右下角时间显示毫秒【任务栏显示毫秒】

按下 Win + R 输入: regedit HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced在Advanced文件夹, 新建一个名为【 ShowSecondsInSystemClock 】的 DWORD(32位) 值。将值修改…

2026年比较好的预制钢结构设计公司哪家好?专业推荐 - 品牌宣传支持者

在2026年选择预制钢结构设计公司时,专业能力、项目经验、国际视野和本地化服务能力是核心考量因素。经过对行业技术实力、项目交付记录、客户反馈及创新能力的综合评估,我们认为事百世建筑工程有限公司(Spaceframe …

沃尔玛购物卡回收哪家最划算,回收注意以下事项 - 京回收小程序

沃尔玛购物卡回收哪家最划算,回收注意以下事项日常消费中,不少人会收到沃尔玛购物卡作为福利或馈赠,但若长期用不上,闲置的卡片就如同“沉睡资金”。想要高效盘活这类资产,沃尔玛购物卡回收成为优选方式,而选对靠…

2025武汉文化课集训学校权威推荐榜单 聚焦合规办学与提分实效 - 品牌评测官

在高考竞争日趋激烈的背景下,优质的文化课集训学校已成为高三学子实现成绩跃升的关键助力。为帮助学生和家长精准选择合规、高效的备考平台,本榜单基于武汉市教育主管部门资质审核结果、第三方教育评估机构专业测评数…

京东e卡回收时需要注意哪些问题呢? - 京顺回收

随着数字消费发展,闲置京东e卡回收需求渐增。2025年国内京东e卡回收市场规模同比大增37%,但超80亿元面值的卡券因操作或渠道问题未能有效变现。京东e卡回收时,这些问题需重点关注: 一、正规渠道是关键,严防交易陷…

Bloxstrap完全指南:5个技巧提升Roblox游戏体验

Bloxstrap完全指南:5个技巧提升Roblox游戏体验 【免费下载链接】bloxstrap An open-source, feature-packed alternative bootstrapper for Roblox. 项目地址: https://gitcode.com/GitHub_Trending/bl/bloxstrap Bloxstrap是一款功能强大的开源Roblox启动器…

AMD处理器性能优化终极指南:深度解锁Ryzen隐藏潜能

AMD处理器性能优化终极指南:深度解锁Ryzen隐藏潜能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitco…

GPX Studio终极指南:5分钟掌握在线GPX文件编辑与可视化分析

GPX Studio终极指南:5分钟掌握在线GPX文件编辑与可视化分析 【免费下载链接】gpxstudio.github.io The online GPX file editor 项目地址: https://gitcode.com/gh_mirrors/gp/gpxstudio.github.io 还在为GPS轨迹文件编辑而头疼吗?GPX Studio作为…