什么是 OpenResty
OpenResty 一个基于 Nginx 的高性能 Web 平台,能够方便地搭建处理超高并发的动态 Web 应用、 Web 服务和动态网关。例如有名的 Kong 网关和国产新秀 ApiSIX 网关都是基于 OpenResty 来进行打造的。
OpenResty 通过实现 ngx_lua 和 stream_lua 等 Nginx 模块,把 Lua/LuaJIT 完美地整合进了 Nginx,从而让我们能够在 Nginx 内部里嵌入 Lua 脚本,用 Lua 语言来实现复杂的 HTTP/TCP/UDP 业务逻辑,同时依然保持着高度的并发服务能力。
处理阶段
一个正常的 Web 服务的生命周期可以分成三个阶段:
initing:服务启动,读取配置文件,初始化内部数据结构
running:服务运行,接受客户端的请求,返回响应结果
exiting:服务停止,做一些必要的清理工作,如关闭监听端口
OpenResty 主要关注的是 initing 和 running 这两个阶段,并做了更细致的划分
OpenResty 的 initing 阶段
configuration:读取配置文件,解析配置指令,设置运行参数
master-initing:配置文件解析完毕,master 进程初始化公用的数据
worker-initing:worker 进程初始化自己专用的数据
OpenResty 的 running 阶段
在 running 阶段,收到客户端的请求后,OpenResty 对每个请求都会使用下面这条流水线进行处理:
ssl:SSL/TLS 安全通信和验证
preread: 在正式处理之前预读数据,接收 HTTP 请求头
rewrite:检查、改写 URI ,实现跳转重定向
access:访问权限控制