美文网首页
Nginx笔记

Nginx笔记

作者: 散装咖啡 | 来源:发表于2017-09-21 00:26 被阅读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模块开发与架构设计》

    相关文章

      网友评论

          本文标题:Nginx笔记

          本文链接:https://www.haomeiwen.com/subject/syiasxtx.html