前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP请求的11个处理阶段

HTTP请求的11个处理阶段

作者头像
三杯水Plus
发布2019-03-14 14:51:53
5810
发布2019-03-14 14:51:53
举报
文章被收录于专栏:运维

摘自 陶辉 深入理解Nginx

几乎所以有关Nginx书只要是讲深入点的就会讲到Nginx请求的11个处理阶段,要记住这些真是不易,人脑特别不擅长记住各种东西,只能做些索引罢了,能做到知道这个知识点在哪儿能找到不就行了,可是你去面试还是问这些理论,所以这里汇总下记录如下

ngx_http_phases阶段定义

代码语言:javascript
复制
typedef enum {
    // 在接收到完整的HTTP头部后处理的HTTP阶段
    NGX_HTTP_POST_READ_PHASE = 0,

    /*在将请求的URI与location表达式匹配前,修改请求的URI(所谓的重定向)是一个独立的HTTP阶段*/
    NGX_HTTP_SERVER_REWRITE_PHASE,

    /*根据请求的URI寻找匹配的location表达式,这个阶段只能由ngx_http_core_module模块实现,不建议其他HTTP模块重新定义这一阶段的行为*/
    NGX_HTTP_FIND_CONFIG_PHASE,

    /*在NGX_HTTP_FIND_CONFIG_PHASE阶段寻找到匹配的location之后再修改请求的URI*/
    NGX_HTTP_REWRITE_PHASE,

    /*这一阶段是用于在rewrite重写URL后,防止错误的nginx.conf配置导致死循环(递归地修改URI),因此,这一阶段仅由ngx_http_core_module模块处理。目前,控制死循环的方式很简单,首先检查rewrite的次数,如果一个请求超过10次重定向,就认为进入了rewrite死循环,这时在NGX_HTTP_POST_REWRITE_PHASE阶段就会向用户返回500,表示服务器内部错误*/
    NGX_HTTP_POST_REWRITE_PHASE,

    /*表示在处理NGX_HTTP_ACCESS_PHASE阶段决定请求的访问权限前,HTTP模块可以介入的处理阶段*/
    NGX_HTTP_PREACCESS_PHASE,

    // 这个阶段用于让HTTP模块判断是否允许这个请求访问Nginx服务器
    NGX_HTTP_ACCESS_PHASE,

    /*在NGX_HTTP_ACCESS_PHASE阶段中,当HTTP模块的handler处理函数返回不允许访问的错误码时(实际就是NGX_HTTP_FORBIDDEN或者NGX_HTTP_UNAUTHORIZED),这里将负责向用户发送拒绝服务的错误响应。因此,这个阶段实际上用于给NGX_HTTP_ACCESS_PHASE阶段收尾*/
    NGX_HTTP_POST_ACCESS_PHASE,

    /*这个阶段完全是为try_files配置项而设立的,当HTTP请求访问静态文件资源时,try_files配置项可以使这个请求顺序地访问多个静态文件资源,如果某一次访问失败,则继续访问try_files中指定的下一个静态资源。这个功能完全是在NGX_HTTP_TRY_FILES_PHASE阶段中实现的*/
    NGX_HTTP_TRY_FILES_PHASE,

    // 用于处理HTTP请求内容的阶段,这是大部分HTTP模块最愿意介入的阶段
    NGX_HTTP_CONTENT_PHASE,

    /*处理完请求后记录日志的阶段。例如,ngx_http_log_module模块就在这个阶段中加入了一个handler处理方法,使得每个HTTP请求处理完毕后会记录access_log访问日志*/
    NGX_HTTP_LOG_PHASE
} ngx_http_phases;
  • NGX_HTTP_POST_READ_PHASE阶段
  • NGX_HTTP_SERVER_REWRITE_PHASE阶段
  • NGX_HTTP_FIND_CONFIG_PHASE阶段
  • NGX_HTTP_REWRITE_PHASE阶段
  • NGX_HTTP_POST_REWRITE_PHASE阶段
  • NGX_HTTP_PREACESS_PHASE阶段
  • NGX_HTTP_ACCESS_PHASE阶段
  • NGX_HTTP_POST_ACCESS_PHASE阶段
  • NGX_HTTP_TRY_FILES_PHASE阶段
  • NGX_HTTP_LOG_PHASE阶段
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档