什么是 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:访问权限控制

本文介绍了OpenResty,一个基于Nginx的高性能Web平台,用于构建动态Web应用和网关。文章详细阐述了OpenResty的处理阶段,包括initing和running,并列出各阶段对应的Lua执行指令,如init_by_lua_file、rewrite_by_lua_file等,展示了如何通过OpenResty编写Demo来体验其工作流程。
最低0.47元/天 解锁文章
715

被折叠的 条评论
为什么被折叠?



