当前位置: 首页 > news >正文

Lua顺序 执行顺序

1.4.2. Lua顺序

Nginx下Lua处理阶段与使用范围:

init_by_lua            http
set_by_lua             server, server if, location, location if
rewrite_by_lua         http, server, location, location if
access_by_lua          http, server, location, location if
content_by_lua         location, location if
header_filter_by_lua   http, server, location, location if
body_filter_by_lua     http, server, location, location if
log_by_lua             http, server, location, location if
timer
init_by_lua:
在nginx重新加载配置文件时,运行里面lua脚本,常用于全局变量的申请。
例如lua_shared_dict共享内存的申请,只有当nginx重起后,共享内存数据才清空,这常用于统计。

set_by_lua:
设置一个变量,常用与计算一个逻辑,然后返回结果
该阶段不能运行Output API、Control API、Subrequest API、Cosocket API

rewrite_by_lua:
在access阶段前运行,主要用于rewrite

access_by_lua:
主要用于访问控制,能收集到大部分变量,类似status需要在log阶段才有。
这条指令运行于nginx access阶段的末尾,因此总是在 allow 和 deny 这样的指令之后运行,虽然它们同属 access 阶段。

content_by_lua:
阶段是所有请求处理阶段中最为重要的一个,运行在这个阶段的配置指令一般都肩负着生成内容(content)并输出HTTP响应。

header_filter_by_lua:
一般只用于设置Cookie和Headers等
该阶段不能运行Output API、Control API、Subrequest API、Cosocket API

body_filter_by_lua:
一般会在一次请求中被调用多次, 因为这是实现基于 HTTP 1.1 chunked 编码的所谓“流式输出”的。
该阶段不能运行Output API、Control API、Subrequest API、Cosocket API

log_by_lua:
该阶段总是运行在请求结束的时候,用于请求的后续操作,如在共享内存中进行统计数据,如果要高精确的数据统计,应该使用body_filter_by_lua。
该阶段不能运行Output API、Control API、Subrequest API、Cosocket API

timer:

可参考官方文档:

http://wiki.nginx.org/HttpLuaModule

转载于:https://www.cnblogs.com/archoncap/p/4960221.html

相关文章:

  • 从起步到影响世界:漫谈韩国网游发展史
  • 数据结构之停车场
  • 偏好简单可爱 社交游戏女会员达70%
  • streams 日差管理及监控
  • 暴雪:星际2仍在审批 筹划中国电竞联赛
  • awk之随机函数rand()和srand()
  • python-socket
  • 传中青宝挖角乐港热血核心团队建新公司
  • java---Unicode-字符转换器
  • 无语:SEGA开发尿尿游戏 仅供男性专用
  • 什么是元数据(Metadata)?
  • jQuery-1.9.1源码分析系列(八) 属性操作
  • nginx 安装
  • 多级BOM
  • 回来了
  • 2017届校招提前批面试回顾
  • HTTP 简介
  • js递归,无限分级树形折叠菜单
  • V4L2视频输入框架概述
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 包装类对象
  • 仿天猫超市收藏抛物线动画工具库
  • 区块链分支循环
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 算法-图和图算法
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​TypeScript都不会用,也敢说会前端?
  • #{} 和 ${}区别
  • #QT(TCP网络编程-服务端)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (7)STL算法之交换赋值
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (一)Linux+Windows下安装ffmpeg
  • (转) 深度模型优化性能 调参
  • 、写入Shellcode到注册表上线
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net Core 中间件验签
  • .net和php怎么连接,php和apache之间如何连接
  • .py文件应该怎样打开?
  • .skip() 和 .only() 的使用
  • @property python知乎_Python3基础之:property
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [Bada开发]初步入口函数介绍
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [cocos2d-x]关于CC_CALLBACK
  • [emacs] CUA的矩形块操作很给力啊
  • [FT]chatglm2微调
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • [hdu2196]Computer树的直径