Nginx笔记

2017-09-21  本文已影响20人  散装咖啡

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模块开发与架构设计》

上一篇下一篇

猜你喜欢

热点阅读