NGINX 把http请求处理流程划分为11个阶段,逻辑细分,以模块为单位进行处理。各个阶段可以包含多个http模块,每个阶段以流水线的形式处理请求。这样的分层处理模式与计算机网络的7层模式类似,每个模块以正交的方式处理请求,带来了低耦合,模块之间的低耦合带来灵活性。

  1. NGX_HTTP_POST_READ

   接受到完整HTTP头部后的处理阶段,位于URI重写之前;

  2. NGX_HTTP_SERVER_REWRITE

    URI与location匹配之前,修改URL的阶段,用于重定向,也就是该阶段执行处于server块内,location块外的重写指令。在读取请求头的过程中,NGNIX会根据host和端口找到对应的虚拟主机配置。

  3, NGX_HTTP_FIND_CONFIG

   根据URI寻找匹配的location块配置阶段,该阶段使用重写后之后的URI来查找对应的location,该阶段可能被执行多次,可能有location级别的重写指令。

  4. NGX_HTTP_REWITR

   上一阶段找到location块后,再修改URI,location级别的URI重写阶段,该阶段执行location基本重写指令,也可能会被执行多次。

  5. NGX_HTTP_POST_REWRITE

     为了防止重写URI后导致死循环,location级别重写的后一阶段,用来检查上阶段是否有URI重写,并根据结果跳转到合适的阶段。

  6. NGX_HTTP_PERACCESS

    访问权限控制的前一阶段,该阶段在访问权限控制之前,一般也用于访问控制,比如限制访问的频率、连接数等。

  7. NGX_HTTP_ACCESS

     访问权限控制阶段,让HTTP模块判断是否允许这个请求进入NGNIX服务器,比如基于黑名单的权限控制,基于用户密码的权限控制等。

  8. NGX_HTTP_POST_ACCESS

     访问权限控制的后一阶段,该阶段根据权限控制阶段的执行结果进行相应的处理,向用户发送拒绝服务的错误码,用来相应上一阶段的拒绝。

  9. NGX_HTTP_TRY_FILES

     为访问静态资源而设置,try_files指令的处理阶段,如果没有配置try_files指令,则该阶段被跳过。

  10. NGX_HTTP_CONTENT

     处理HTTP请求内容的阶段,大部分HTTP模块进入这个阶段--相应内容生成阶段,该阶段产生相应,并发送到客户端。

  11. NGX_HTTP_LOG

   处理完请求后的日志记录阶段,该阶段记录访问日志。

最新文章

  1. CAS 4.0.0RC 配置通过数据库认证用户登录
  2. C++ 合成默认构造函数的真相
  3. Linux之Qt利用Sqlite静态编译库(转)
  4. 微信公众号发起微信支付 c#
  5. FFMPEG视音频编解码零基础学习方法
  6. Connect to the mysql dataase from remote server
  7. python下如何处理windows的路径名
  8. Xcode常用快捷键 (转载)
  9. Centos 升级MySQL版本或者Yum安装Mysql5.6
  10. tmd123.com
  11. Model Validation(模型验证)
  12. (转)用JMX监测JVM的运行参数
  13. Idea下载后初始配置(windows环境下)
  14. Centos6.9安装vsftpd并配置多用户的方法
  15. 51Nod 1108 距离之和最小 V2 1096 距离之和最小 中位数性质
  16. 关于Yuri Boykov and Vladimir Kolmogorov 于2004年提出的max flow / min cut的算法的详解
  17. 使用exceljs时报错:no such file or directory
  18. Gym - 101982C Contest Setting (动态规划)
  19. Django与ajax、分页器
  20. 【Docker】退出容器和进入容器

热门文章

  1. Linux 命令 diff
  2. B - Yet Another Palindrome Problem
  3. 在idea中查看jar包源码
  4. Wahahahehehe 随笔归档
  5. 14-K8S之helm入门到逃跑
  6. mysql问题汇总含解决方案
  7. AI大模型学习了解
  8. 斐波那契数python实现迭代循环两种方法
  9. kaola
  10. hibernate的校验