Nginx执行阶段
Openresty是什么?
重申一下Openresty是什么?截一张Openresty官网,春哥对Openresty的一个官方说明如下图: 
我的理解Openresty = Nginx + ngxhttp_lua_module + lua_resty*;它是一个原生Nginx合上一个HTTP_LUA模块,在加上一系列Lua_resty模块组成的一个Ngx_Lua高性能服务生态。
Openresty处理HTTP请求的执行阶段
Openrestry处理HTTP请求的执行阶段来自于Nginx,Nginx的HTTP框架依据常见的处理流程将处理阶段划分为11个阶段,其中每个处理阶段可以由任意多个HTTP模块流水式地处理请求,Openresty通过ngx_http_lua_module将Lua特性嵌入Nginx,ngx_http_lua_module属于一个Nginx的HTTP模块,为高性能服务开发封装了7个相应HTTP请求处理阶段如下:
set_by_lua
content_by_lua
rewrite_by_lua
access_by_lua
header_filter_by_lua
body_filter_by_lua
log_by_lua
有同学会发现,Openresty所提供的LUA解析指令还有以下两个:
init_by_lua
init_worker_by_lua
init_by_lua作用在配置加载阶段,init_worker_by_lua作用在worker进程初始化阶段,并非HTTP请求处理阶段。
另外,需要重点提一下的是,Nginx输出过滤器是流式处理模型,一个数据块body filter就被调用一次。可以用以下简单的例子测试验证: nginx.conf
logs/development-error.log截取
可以看出body_filter的执行次数等于ngx.say数量加一
Last updated
Was this helpful?