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