nginx/openresty 执行阶段

nginx


nginx 官方文档:http://nginx.org/en/docs/dev/development_guide.html#http_phases

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
NGX_HTTP_POST_READ_PHASE:
接收完请求头之后的第一个阶段,ngx_http_realip_module 注册在这个阶段

NGX_HTTP_SERVER_REWRITE_PHASE:
server级别的uri重写阶段, ngx_http_rewrite_module 注册在这个阶段

NGX_HTTP_FIND_CONFIG_PHASE:
寻找location配置阶段,该阶段使用重写之后的uri来查找对应的location

NGX_HTTP_REWRITE_PHASE:
location级别的uri重写阶段

NGX_HTTP_POST_REWRITE_PHASE:
location级别重写的后一阶段,用来检查上阶段是否有uri重写,并根据结果跳转到合适的阶段

NGX_HTTP_PREACCESS_PHASE:
一般也用于访问控制,比如限制访问频率,并发等
ngx_http_limit_conn_module/ngx_http_limit_req_module这两个模块注册在此阶段

NGX_HTTP_ACCESS_PHASE:
访问权限控制阶段,比如基于ip黑白名单的权限控制,基于用户名密码的权限控制等, ngx_http_access_module/ngx_http_auth_basic_module 注册在此阶段

NGX_HTTP_POST_ACCESS_PHASE:
问权限控制的后一阶段,该阶段根据权限控制阶段的执行结果进行相应处理 `satisfy` 指令在此阶段生效。

NGX_HTTP_TRY_FILES_PHASE:
try_files指令的处理阶段,如果没有配置try_files指令,则该阶段被跳过

NGX_HTTP_CONTENT_PHASE:
内容生成阶段,该阶段产生响应,并发送到客户端

NGX_HTTP_LOG_PHASE:
日志记录阶段,该阶段记录访问日志

openresty


参考文档:https://moonbingbing.gitbooks.io/openresty-best-practices/content/ngx_lua/phase.html
phase

1
2
3
4
5
6
7
set_by_lua*: 流程分支处理判断变量初始化
rewrite_by_lua*: 转发、重定向、缓存等功能(例如特定请求代理到外网)
access_by_lua*: IP 准入、接口权限等情况集中处理(例如配合 iptable 完成简单防火墙)
content_by_lua*: 内容生成
header_filter_by_lua*: 响应头部过滤处理(例如添加头部信息)
body_filter_by_lua*: 响应体过滤处理(例如完成应答内容统一成大写)
log_by_lua*: 会话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)