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: 会话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)。

相关推荐
荣--11 小时前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森12 小时前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜1 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode4 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220704 天前
如何搭建本地yum源(上)
运维
ping某5 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质7 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务