nginx-lua模块处理流程

一. 简述:

nginx的模块化设计使得每一个http模块可以只专注于完成一个独立的,简单的功能。一个请求的完整处理过程可以由多个http模块共同协作完成,这种设计具有简单性,测试性,扩展性,灵活性。关于nginx 的处理流程,可以参考: nginx-配置指令的执行顺序!_nginx配置顺序-CSDN博客 这里只会说明lua模块涉及到的部分。

二. 关于lua 模块处理流程:

nginx框架按照常见的处理流程,将处理阶段划分为11个阶段,其中每个处理阶段又可以由任意多个http模块流水式进行请求处理,开发者可以很容易分辨咨询需要开放的模块应该定义在什么阶段。而lua模块,涉及到其中的8个阶段。

init_by_lua http

set_by_lua server, server if, location, location if

rewrite_by_lua http, server, location, location if

access_by_lua http, server, location, location if

content_by_lua location, location if

header_filter_by_lua http, server, location, location if

body_filter_by_lua http, server, location, location if

log_by_lua http, server, location, location if

简述:

set_by_lua: 流程分支处理判断变量初始化

rewrite_by_lua: 转发、重定向、缓存等功能(例如特定请求代理到外网)

access_by_lua: IP准入、接口权限等情况集中处理(例如配合iptable完成简单防火墙)

content_by_lua: 内容生成

header_filter_by_lua: 应答HTTP过滤处理(例如添加头部信息)

body_filter_by_lua: 应答BODY过滤处理(例如完成应答内容统一成大写)

log_by_lua: 会话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)。

相关推荐
安的列斯凯奇16 分钟前
JavaRestClient 客户端初始化+索引库操作
运维·jenkins
惟长堤一痕33 分钟前
黑马linux入门笔记(01)初始Linux Linux基础命令 用户和权限 实用操作
linux·运维·笔记
飞花舞者41 分钟前
nginx代理服务器配置不正确出现的小bug
运维·nginx·bug
CAD芯智库2 小时前
国产信创3D- 中望3D Linux 2025发布,助力企业高效转型国产三维CAD
linux·运维·3d
霍格沃兹测试开发学社测试人社区3 小时前
Jenkins质量门禁设计方案的深入探讨
运维·软件测试·测试开发·jenkins
YoungerChina3 小时前
浏览器输入http形式网址后自动跳转https解决方法
运维
petunsecn3 小时前
Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为
运维·docker·容器
雨中rain3 小时前
Linux -- 自定义协议体会序列化和反序列化
linux·运维·服务器
月熊4 小时前
Linux---shell脚本练习
linux·运维·服务器
dessler4 小时前
Docker-番外篇之containerd
linux·运维·docker