OpenResty基于Lua实现根据HTTP头限速
文章目录
OpenResty简要介绍
引用官方一段介绍:
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
个人最看重的还是默认集成的Lua能力,NGINX默认并不集成它,要启用此功能还需要重新编译。
NGINX Lua简要介绍
官网是最好的教材,没有之一。官网介绍,下面是常用的命令与作用.
- 
init_by_lua_block/init_by_lua_filenginx Master进程加载配置时执行,通常用于初始化全局配置/预加载Lua模块 - 
set_by_lua_block/set_by_lua_file设置nginx变量,可以实现复杂的赋值逻辑,此处是阻塞的,Lua代码要做到非常快; - 
rewrite_by_lua_block/rewrite_by_lua_filerrewrite阶段处理,可以实现复杂的转发/重定向逻辑; - 
access_by_lua_block/access_by_lua_file请求访问阶段处理,用于访问控制 - 
content_by_lua_block/content_by_lua_file内容处理器,接收请求处理并输出响应 - 
body_filter_by_lua_block/body_filter_by_lua_file对响应数据进行过滤,比如截断、替换。 - 
header_filter_by_lua_block/header_filter_by_lua_file定义和输出过滤头 
实战
需求
做云服务,经常有遇到某些大客户做活动导致整个平台的其他客户都受影响。简单实现对具体商户的资源请求限制(具体就是API的请求频率)。
开发前期准备工作已做好充分准备,不同商家请求公共资源时,都会在HTTP头里面新增一个假设shopid的值。
配置
nginx.conf
 | 
 | 
access.lua
 | 
 | 
文章作者 UnknowName
上次更新 2020-12-21