OpenResty - - - - - - - - - -核心执行阶段篇

  

前言

  
  

前两篇分别介绍了OpenResty核心概念和,优势与架构等信息,进行本篇之前建议至少观看一遍。

  
      <李> OpenResty - - - - - - - - - -企业级理论实践篇   <李> OpenResty - - - - - - - - - -企业级入门实践篇   
     

背景

  
  

之前篇章介绍了OpenResty是基于Nginx为基础核心的开发平台,
本篇将继续介绍基础平台(Nginx)的主要特性。

     

特性

  

执行阶段

  
  

OpenResty将应用分为4个大阶段,11个小阶段,如下图所示。

  
      <李>初始化阶段:主人进程启动预加载/生成工人进程预加载李   <李>转发/访问阶段:url转发,权限判断李   <李>内容处理/生成阶段:内容生成李   <李>日志阶段:日志记录   
     

 OpenResty - - - - - - - - - -核心执行阶段篇

  

 OpenResty - - - - - - - - - -核心执行阶段篇

  
开发中常用的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阶段)

  

环境

  
 <代码类=" language-bash "> root@localhost ~ #猫/etc/redhat-release
  Linux CentOS释放7.4.1708(核心)
  root@localhost ~ # uname - r
  3.10.0-693.el7.x86_64  
  

OpenResty版本

  
 <代码类=" language-bash "> root@localhost ~ #/usr/local/openresty/bin/openresty - v
  nginx版本:openresty/1.13.6.2  
  

创建测试项目目录

  
 <代码类=" language-bash "> [root@localhost ~] # mkdir vp openresty-phase-test/{配置、日志}
  mkdir:创建目录“openresty-phase-test”
  mkdir:创建目录“openresty-phase-test/conf”
  mkdir:创建目录“openresty-phase-test/日志” 
  
编写配置文件
  
  

通过ngx.log输出错误级别日志至文件中

     
 <代码类=" language-bash "> [root@localhost ~] #猫openresty-phase-test/conf/nginx.conf
  worker_processes 1;#设置工人数量
  error_log日志/error.log;#指定错误日志文件路径
  事件{
  worker_connections 1024;#单个工人进程最大允许同时建立外部连接的数量
  }
  
  http {
  服务器{
  听9999;#设置监听端口,注意系统其它服务是否已占用该端口
  
  位置/{
  set_by_lua_block $一个{
  ngx.log (ngx。呃,我是set_by_lua_block阶段)
  }
  
  rewrite_by_lua_block {
  ngx.log (ngx。呃,我是rewrite_by_lua_block阶段)
  }
  
  access_by_lua_block {
  ngx.log (ngx。呃,我是access_by_lua_block阶段)
  }
  
  content_by_lua_block {
  ngx.log (ngx。呃,我是content_by_lua_block阶段)
  }
  
  header_filter_by_lua_block {
  ngx.log (ngx。呃,我是header_filter_by_lua_block阶段)
  }
  
  body_filter_by_lua_block {
  ngx.log (ngx。呃,我是body_filter_by_lua_block阶段)
  }
  
  log_by_lua_block {
  ngx.log (ngx。呃,我是log_by_lua_block阶段)
  }
  }
  }
  } 
  

通过openresty运行应用

  
 <代码类=" language-bash "> [root@localhost ~] #/usr/local/openresty/bin/openresty - p openresty-phase-test  
  

查看错误日志文件内容

  
 <代码类=" language-bash "> [root@localhost ~] #猫openresty-phase-test/日志/error.log
  (root@localhost ~) #  
  

<强>此时错误日志文件内容为空

  

通过卷发工具发起测试请求[本地,端口为配置文件中的9999]

  
 <代码类=" language-bash "> [root@localhost ~] #卷发127.0.0.1:9999  
  

OpenResty - - - - - - - - - -核心执行阶段篇