OpenResty--------核心执行阶段篇
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,前言前两篇分别介绍了OpenResty核心概念和,优势与架构等信息,进行本篇之前建议至少观看一遍。OpenResty--------企业级理论实践篇OpenResty--------企业级入门实践篇背
千家信息网最后更新 2025年12月02日OpenResty--------核心执行阶段篇
前言
前两篇分别介绍了OpenResty核心概念和,优势与架构等信息,进行本篇之前建议至少观看一遍。
- OpenResty--------企业级理论实践篇
- OpenResty--------企业级入门实践篇
背景
之前篇章介绍了OpenResty是基于Nginx为基础核心的开发平台,
本篇将继续介绍基础平台(Nginx)的主要特性。
特性
执行阶段
OpenResty将应用分为4个大阶段,11个小阶段,如下图所示。
- 初始化阶段: master进程启动预加载/生成worker进程预加载
- 转发/访问阶段:url转发,权限判断
- 内容处理/生成阶段: 内容生成
- 日志阶段: 日志记录
开发中常用的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*: 会话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)
测试[常用的7阶段]
环境
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@localhost ~]# uname -r3.10.0-693.el7.x86_64OpenResty版本
[root@localhost ~]# /usr/local/openresty/bin/openresty -vnginx version: openresty/1.13.6.2创建测试项目目录
[root@localhost ~]# mkdir -vp openresty-phase-test/{conf,logs}mkdir: created directory 'openresty-phase-test'mkdir: created directory 'openresty-phase-test/conf'mkdir: created directory 'openresty-phase-test/logs'编写配置文件
通过ngx.log输出错误级别日志至文件中
[root@localhost ~]# cat openresty-phase-test/conf/nginx.conf worker_processes 1; # 设置worker数量error_log logs/error.log; # 指定错误日志文件路径events { worker_connections 1024; # 单个worker进程最大允许同时建立外部连接的数量}http { server { listen 9999; # 设置监听端口, 注意系统其它服务是否已占用该端口 location / { set_by_lua_block $a { ngx.log(ngx.ERR, "my is set_by_lua_block phase") } rewrite_by_lua_block { ngx.log(ngx.ERR, "my is rewrite_by_lua_block phase") } access_by_lua_block { ngx.log(ngx.ERR, "my is access_by_lua_block phase") } content_by_lua_block { ngx.log(ngx.ERR, "my is content_by_lua_block phase") } header_filter_by_lua_block { ngx.log(ngx.ERR, "my is header_filter_by_lua_block phase") } body_filter_by_lua_block { ngx.log(ngx.ERR, "my is body_filter_by_lua_block phase") } log_by_lua_block { ngx.log(ngx.ERR, "my is log_by_lua_block phase") } } }}通过openresty运行应用
[root@localhost ~]# /usr/local/openresty/bin/openresty -p openresty-phase-test查看错误日志文件内容
[root@localhost ~]# cat openresty-phase-test/logs/error.log [root@localhost ~]#此时错误日志文件内容为空
通过curl工具发起测试请求[本地,端口为配置文件中的9999]
[root@localhost ~]# curl 127.0.0.1:9999 查看错误日志文件内容
2019/08/02 05:34:22 [error] 1092#0: *1 [lua] set_by_lua:2: my is set_by_lua_block phase, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:9999"2019/08/02 05:34:22 [error] 1092#0: *1 [lua] rewrite_by_lua(nginx.conf:18):2: my is rewrite_by_lua_block phase, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:9999"2019/08/02 05:34:22 [error] 1092#0: *1 [lua] access_by_lua(nginx.conf:22):2: my is access_by_lua_block phase, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:9999"2019/08/02 05:34:22 [error] 1092#0: *1 [lua] content_by_lua(nginx.conf:27):2: my is content_by_lua_block phase, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:9999"2019/08/02 05:34:22 [error] 1092#0: *1 [lua] header_filter_by_lua:2: my is header_filter_by_lua_block phase, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:9999"2019/08/02 05:34:22 [error] 1092#0: *1 [lua] body_filter_by_lua:2: my is body_filter_by_lua_block phase, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:9999"2019/08/02 05:34:22 [error] 1092#0: *1 [lua] log_by_lua(nginx.conf:39):2: my is log_by_lua_block phase while logging request, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "127.0.0.1:9999"可以看到安排阶段顺序进行输出
阶段
日志
内容
文件
错误
处理
生成
端口
进程
测试
核心
企业
信息
基础
头部
实践篇
常用
平台
数量
权限
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库建表的心得体会
尖兵服务器
交易所平台用什么软件开发
软件开发中的po
计算机网络安全论文答辩模板
石狮软件开发公司
控车软件开发
用香港服务器违法吗算翻墙吗
霍林河天气预报软件开发
数据库技术可以干什么
数据库如何查询收银系统
数字图书馆软件开发
软件开发视觉识别
唐龙网络技术有限公司
常用网络安全技术措施有哪些
数据库菜单设计模块
服务器上内存条的sn号在哪看
昆山诚臻软件开发有限公司
网络安全检查情况总结
网络安全生物数据
关系数据库和关系数据库表
一台服务器能满足多少人
t140服务器显卡驱动
数据库中的数据资源要使用
旧电脑 服务器
ps连接服务器教程
软件开发者能看到用户操作步骤吗
湖北天门网络安全
天茂网络安全
山东省网络技术大赛考什么