带详细函数注释及函数调用注释,附github地址,每个配置源码中详细说明,所有日志打印带上函数名和行号,更好的日志定位分析
之前在nginx版本发过,发现大部分关系该项目的都是JAVASCRIPT PHP PYTHON的兄弟,因此再次重发一次
对nginx进行了通读分析,并对函数进行了详细注释。同时对相关功能进行了优化,日志功能分析能力更易懂。
github地址下载:
https://github.com/y123456yz/reading-code-of-nginx-1.9.2
或者在github官网搜索reading-code-of-nginx-1.9.2

对linux内核网络协议栈底层实现有兴趣的,也可以看看这里哈,带详细协议栈源码分析
https://github.com/y123456yz/Reading-and-comprehense-linux-Kernel-network-protocol-stack

php代码

/*
    connection_pool_size
    语法:connection_pool_size size;
    默认:connection_pool_size 256;
    配置块:http、server
    Nginx对于每个建立成功的TCP连接会预先分配一个内存池,上面的size配置项将指定这个内存池的初始大小(即ngx_connection_t结构体中的pool内存池初始大小,
    9.8.1节将介绍这个内存池是何时分配的),用于减少内核对于小块内存的分配次数。需慎重设置,因为更大的size会使服务器消耗的内存增多,而更小的size则会引发更多的内存分配次数。
    */
    { ngx_string("connection_pool_size"),
      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
      ngx_conf_set_size_slot,
      NGX_HTTP_SRV_CONF_OFFSET,
      offsetof(ngx_http_core_srv_conf_t, connection_pool_size),
      &ngx_http_core_pool_size_p },
  
/*
语法:request_pool_size size;
默认:request_pool_size 4k;
配置块:http、server
Nginx开始处理HTTP请求时,将会为每个请求都分配一个内存池,size配置项将指定这个内存池的初始大小(即ngx_http_request_t结构体中的pool内存池初始大小,
11.3节将介绍这个内存池是何时分配的),用于减少内核对于小块内存的分配次数。TCP连接关闭时会销毁connection_pool_size指定的连接内存池,HTTP请求结束
时会销毁request_pool_size指定的HTTP请求内存池,但它们的创建、销毁时间并不一致,因为一个TCP连接可能被复用于多个HTTP请求。
*/
    { ngx_string("request_pool_size"),
      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
      ngx_conf_set_size_slot,
      NGX_HTTP_SRV_CONF_OFFSET,
      offsetof(ngx_http_core_srv_conf_t, request_pool_size),
      &ngx_http_core_pool_size_p },
 
 
 
//这个函数完成的功能很简单就是将server_name指令指定的虚拟主机名添加到ngx_http_core_srv_conf_t的server_names数组中,以便在后面对整个web server支持的虚拟主机进行初始化。
static char *
ngx_http_core_server_name(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
    ngx_http_core_srv_conf_t *cscf = conf;
 
    u_char                   ch;
    ngx_str_t               *value;
    ngx_uint_t               i;
    ngx_http_server_name_t  *sn;
登录后复制
09-09 06:08