zoukankan      html  css  js  c++  java
  • 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

        记录日志

  • 相关阅读:
    Python合集之文件操作(二)
    Python合集之文件操作(一)
    Python合集之异常(二)
    Python合集之异常(一)
    Python合集之模块(五)
    Visual Studio 配置额外工具 Windows Terminal 等
    CMakeList.txt
    alpha智能图像(全栈的进阶之路)
    位运算实现多状态控制
    缓存函数 memorize
  • 原文地址:https://www.cnblogs.com/fly-kaka/p/11102849.html
Copyright © 2011-2022 走看看