openresty开发系列38--通过Lua+Redis 实现动态封禁IP 一)需求背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝提供服务. 二)设计方案实现 IP 黑名单的功能有很多途径:1.在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求:2.在 Web Server 层面,通过 Nginx 自身的 deny 选项 或者 lua 插件 配置 IP 黑名单:3.在应用层面,在请求服务之前检查一遍客户端 IP…
openresty开发系列26--openresty中使用redis模块 在一些高并发的场景中,我们常常会用到缓存技术,现在我们常用的分布式缓存redis是最知名的, 操作redis,我们需要引入redis模块 require "resty.redis": 我们现在做个可以操作redis进行赋值,读值的案例 一)连接redis服务器 ---定义 redis关闭连接的方法local function close_redis(red) if not red then …
openresty开发系列16--lua中的控制结构if-else/repeat/for/while 一)条件 - 控制结构 if-else if-else 是我们熟知的一种控制结构.Lua 跟其他语言一样,提供了 if-else 的控制结构. )单个 if 分支 型 if 条件 then --body end 条件为真 ,执行if中的body ----------------------- x = then print("分支一") end ---- x = ) then print…
openresty开发系列13--lua基础语法2常用数据类型介绍 一)boolean(布尔)布尔类型,可选值 true/false: Lua 中 nil 和 false 为"假",其它所有值均为"真".比如 0 和空字符串就是"真": local a = truelocal b = 0local c = nil if a then print("a") -->output:aelse prin…
openresty开发系列12--lua介绍及常用数据类型简介 lua介绍 1993 年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro in Brazil)诞生了一门编程语言,发明者是该校的三位研究人员,他们给这门语言取了个浪漫的名字——Lua,在葡萄牙语里代表美丽的月亮.事实证明她没有糟蹋这个优美的单词,Lua 语言正如它名字所预示的那样成长为一门简洁.优雅且富有乐趣的语言. Lua 从一开始就是作为一门方便嵌入…