OpenResty 执行流程阶段
nginx有11个处理阶段,如下图所示:

| 指令 | 所处处理阶段 | 使用范围 | 解释 |
|---|---|---|---|
| init_by_lua init_by_lua_file |
loading-config | http | nginx Master进程加载配置时执行;通常用于初始化全局配置/预加载Lua模块 |
| init_worker_by_lua init_worker_by_lua_file |
starting-worker | http | 每个Nginx Worker进程启动时调用的计时器,如果Master进程不允许则只会在init_by_lua之后调用;通常用于定时拉取配置/数据,或者后端服务的健康检查 |
| set_by_lua set_by_lua_file |
rewrite | server,server if,location,location if | 设置nginx变量,可以实现复杂的赋值逻辑;此处是阻塞的,Lua代码要做到非常快; |
| rewrite_by_lua rewrite_by_lua_file |
rewrite tail | http,server,location,location if | rrewrite阶段处理,可以实现复杂的转发/重定向逻辑; |
| access_by_lua access_by_lua_file |
access tail | http,server,location,location if | 请求访问阶段处理,用于访问控制 |
| content_by_lua content_by_lua_file |
content | location,location if | 内容处理器,接收请求处理并输出响应 |
| header_filter_by_lua header_filter_by_lua_file |
output-header-filter | http,server,location,location if | 设置header和cookie |
| body_filter_by_lua body_filter_by_lua_file |
output-body-filter | http,server,location,location if | 对响应数据进行过滤,比如截断、替换。 |
| log_by_lua log_by_lua_file |
log | http,server,location,location if | log阶段处理,比如记录访问量/统计平均响应时间 |
一般我们在开发过程中常用到的阶段如下:
set_by_lua、rewrite_by_lua、access_by_lua、content_by_lua、header_filter_by_lua、body_filter_by_lua、log_by_lua、
1.set_by_lua
做流程分支判断,判断变量初始化
2.rewrite_by_lua
转发重定向,缓存功能
3.access_by_lua
ip准入,接口合法权限判断,根据iptable做防火墙的功能
4.content_by_lua
内容生产
5.header_filter_by_lua
增加头部信息
6.body_filter_by_lua
内容过滤
7.log_by_lua
记录日志
OpenResty 执行流程阶段的更多相关文章
- openresty开发系列31--openresty执行流程
openresty开发系列31--openresty执行流程 我们先看个例子 location /test { set $a 32; echo $a; set $a 56; e ...
- OpenResty 执行阶段的概念和用途
主要还是 Nginx 的执行阶段知识了,都是因为 OR 才会那么深刻, 它有些自己的阶段. 主要还是参照 春哥的 Nginx 教程 请多读几遍,如果不清楚nginx的执行阶段就无法充分利用 openr ...
- MyBatis执行流程的各阶段介绍
目录 一.mybatis极简示例 1.1 创建mybatis配置文件 1.2 创建数据库表 1.3 创建javabean 1.4 创建mapper映射文件 1.5 运行测试 二.mybatis的几大“ ...
- 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...
- Servlet执行流程和生命周期【慕课网搬】
Servlet执行流程(GET方式为例) 首先用户客户端浏览器发出Get方式(点击超链接方式)向浏览器发出请求. 服务器接收到客户端点击超链接,接收到GET请求之后,服务器到WEB.xml中<s ...
- PHP解释器引擎执行流程 - [ PHP内核学习 ]
catalogue . SAPI接口 . PHP CLI模式解释执行脚本流程 . PHP Zend Complile/Execute函数接口化(Hook Call架构基础) 1. SAPI接口 PHP ...
- Map/Reduce 工作机制分析 --- 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...
- ThinkPHP中的跨控制器调用与框架执行流程
一.跨控制器调用 UserController.class.php <?php namespace Home/Controller use Think/Controller class User ...
- Servlet、Struts2、SpringMVC执行流程
Servlet 有以下四个阶段: 1.加载和实例化 Servlet容器负责加载和实例化Servlet. 当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Ser ...
随机推荐
- Hadoop集群安装压缩工具Snappy,用于Hbase
最近项目中要用到Hadoop和Hbase,为了节省服务器的存储成本,并提高吞吐,安装并开启HBase的数据压缩为Snappy. 主流的HBase压缩方式有GZip | LZO | Snappy,Sna ...
- jenkins报错解决
https://www.cnblogs.com/yangxia-test/p/4368778.html https://blog.csdn.net/xlyrh/article/details/5138 ...
- Vuex模块:开启命名空间
模块开启命名空间后,享有独自的命名空间. { "模块1":{ state:{}, getters:{}, mutations:{}, actions:{} }, "模块2 ...
- 【图像处理】FFmpeg解码H264及swscale缩放详解
http://blog.csdn.net/gubenpeiyuan/article/details/19548019 主题 FFmpeg 本文概要: 本文介绍著名开源音视频编解码库ffmpeg如何 ...
- SQL ------ JDBC 删除指定的某条记录
package demo; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; ...
- [loj#2005][SDOI2017]相关分析 _线段树
「SDOI2017」相关分析 题目链接:https://loj.ac/problem/2005 题解: 把上面的式子拆掉,把下面的式子拆掉. 发现所有的东西都能用线段树暴力维护. 代码: #inclu ...
- 【Python】【demo实验6】【练习实例】【奖金发放计算(阶梯)】
题目: 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万 ...
- PAT B1046.猜拳
课本AC #include <cstdio> int main() { int n, failA = 0, failB = 0; scanf("%d", &n) ...
- Linux就该这么学——重要的环境变量
Linux命令执行过程 1.判断用户是否以绝对路径或相对路径的方式输入命令(如 /bin/ls) ,如果是的话则直接执行 2.Linux系统检查用户输入的命令是否为”别名命令”. 即用一个自定义的命令 ...
- JS实现点击查看密码功能,再次点击隐藏密码!
<table border='1'> <tr> <td>aaaa</td> <td onclick="myFunction(this.i ...