一个请求经过Nginx,分成了多个阶段。具体各个阶段如下:
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: 会话完成后本地异步完成日志记录
通过这种阶段的划分,分工明确,代码独立,避免代码都在一处的臃肿,思路值得学习。