Nginx笔记

HTTP请求的11个处理阶段

typedef enum {  
     // 接收到完整的HTTP头部后处理的阶段 
     NGX_HTTP_POST_READ_PHASE = 0,  

    // URI与location匹配前,修改URI的阶段,用于重定向  
    NGX_HTTP_SERVER_REWRITE_PHASE, 
   
    // 根据URI寻找匹配的location块配置项  
    NGX_HTTP_FIND_CONFIG_PHASE,    

   // 上一阶段找到location块后再修改URI 
    NGX_HTTP_REWRITE_PHASE,         

   // 防止重写URL后导致的死循环  
    NGX_HTTP_POST_REWRITE_PHASE,   
   
   // 下一阶段之前的准备 
    NGX_HTTP_PREACCESS_PHASE,        
   
   // 让HTTP模块判断是否允许这个请求进入Nginx服务器 
    NGX_HTTP_ACCESS_PHASE   
    
   // 向用户发送拒绝服务的错误码,用来响应上一阶段的拒绝  
    NGX_HTTP_POST_ACCESS_PHASE,    
   
   // 为访问静态文件资源而设置  
    NGX_HTTP_TRY_FILES_PHASE,  

   // 处理HTTP请求内容的阶段,大部分HTTP模块介入这个阶段  
    NGX_HTTP_CONTENT_PHASE,        
   
   // 处理完请求后的日志记录阶段
    NGX_HTTP_LOG_PHASE               
} ngx_http_phases;  

以上11个阶段中,HTTP无法介入的阶段有4个:
NGX_HTTP_FIND_CONFIG_PHASE
NGX_HTTP_POST_REWRITE_PHASE
NGX_HTTP_POST_ACCESS_PHASE
NGX_HTTP_TRY_FILES_PHASE
剩余的7个阶段,HTTP模块均能介入,每个阶段可介入模块的个数也是没有限制的,多个HTTP模块可同时介入同一阶段并作用于同一请求。

参考:《深入理解Nginx模块开发与架构设计》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容