OpenResty 执行流程阶段

nginx有11个处理阶段,如下图所示:

 

 

 

指令所处处理阶段使用范围解释
init_by_lua
init_by_lua_file
loading-confighttpnginx Master进程加载配置时执行;通常用于初始化全局配置/预加载Lua模块
init_worker_by_lua
init_worker_by_lua_file
starting-workerhttp每个Nginx Worker进程启动时调用的计时器,如果Master进程不允许则只会在init_by_lua之后调用;通常用于定时拉取配置/数据,或者后端服务的健康检查
set_by_lua
set_by_lua_file
rewriteserver,server if,location,location if设置nginx变量,可以实现复杂的赋值逻辑;此处是阻塞的,Lua代码要做到非常快;
rewrite_by_lua
rewrite_by_lua_file
rewrite tailhttp,server,location,location ifrrewrite阶段处理,可以实现复杂的转发/重定向逻辑;
access_by_lua
access_by_lua_file
access tailhttp,server,location,location if请求访问阶段处理,用于访问控制
content_by_lua
content_by_lua_file
contentlocation,location if内容处理器,接收请求处理并输出响应
header_filter_by_lua
header_filter_by_lua_file
output-header-filterhttp,server,location,location if设置header和cookie
body_filter_by_lua
body_filter_by_lua_file
output-body-filterhttp,server,location,location if对响应数据进行过滤,比如截断、替换。
log_by_lua
log_by_lua_file
loghttp,server,location,location iflog阶段处理,比如记录访问量/统计平均响应时间

一般我们在开发过程中常用到的阶段如下:

set_by_lua、rewrite_by_lua、access_by_lua、content_by_lua、header_filter_by_lua、body_filter_by_lua、log_by_lua、

1.set_by_lua

   做流程分支判断,判断变量初始化

2.rewrite_by_lua

   转发重定向,缓存功能

3.access_by_lua

   ip准入,接口合法权限判断,根据iptable做防火墙的功能

4.content_by_lua

   内容生产

5.header_filter_by_lua

   增加头部信息

6.body_filter_by_lua

   内容过滤

7.log_by_lua

    记录日志

转载于:https://www.cnblogs.com/fly-kaka/p/11102849.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenResty 是一个基于 Nginx 的全功能 Web 应用服务器,它通过在 Nginx 进程中嵌入 Lua 脚本解释器,使得开发者可以使用 Lua 脚本来扩展 Nginx 功能。 在 OpenResty 中,不同阶段的处理共享一个 Lua 虚拟机实例,这使得在不同的阶段可以共享变量和其他资源。具体而言,OpenResty 支持以下几个阶段的共享: 1. 预配置阶段:在这个阶段,可以使用 Lua 脚本动态地配置 Nginx 的一些基本参数,如 worker 数量、最大连接数等。这些配置可以在不重启服务的情况下实时生效。 2. 初始化阶段:通过在 init_worker_by_lua 阶段执行的 Lua 脚本,可以共享一些需要在所有工作进程内预先初始化的数据和资源。例如,可以在这个阶段初始化数据库连接池或加载一些共享代码库,以提高后续请求的处理效率。 3. 请求处理阶段:在 access_by_lua 阶段,可以共享在初始化阶段初始化的数据和资源。这些数据和资源可以用于处理用户请求,如访问一些共享的内存缓存、全局变量等。 4. 日志阶段:在 log_by_lua 阶段,可以将请求处理得到的信息记录到一个共享的日志文件中。这个共享的文件描述符可以在处理不同请求的不同阶段使用。 总之,OpenResty 的共享特性能够帮助开发者在不同阶段共享数据和资源,提高开发效率和性能。通过合理利用这些共享机制,可以实现更灵活、可扩展的 Web 应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值