構成分析全体は主に関数 ngx_init_cycle(&init_cycle) によって処理されます。 = ngx_create_pool(NGX_CYCLE_POOL_SIZE,log );// 16k のメモリ プールを割り当てます。小さなメモリ ノードを追加した場合、最大ノード サイズは 4095 です。コンテキスト構造体は、対応する構造体に保存されます。サイクル>conf_ctxの
コアモジュールは次のとおりです:
/* * 通过加锁和解锁,来更新如下时间 ngx_cached_time = tp; ngx_cached_http_time.data = p0; ngx_cached_err_log_time.data = p1; ngx_cached_http_log_time.data = p2; ngx_cached_http_log_iso8601.data = p3; */
nginx は、後続のモジュール コンテキストを作成するための道を開くために、最初に NGX_CORE_MODULE を作成しました。つまり、
NGX_CORE_MODULE は、次のように他のモジュールの基礎となります:
その中には、Ngx_errlog_module、ngx_events_module、ngx_http_module モジュールがあります。しないでくださいhave create_confこのメソッドは、ユーザーの conf が実際に動的に作成されることに基づいています。
cycle->pool = pool; cycle->log = log; cycle->new_log.log_level = NGX_LOG_ERR; cycle->conf_prefix; //设置配置文件dir cycle->prefix; //设置运行环境dir cycle->conf_file; //设置配置文件绝对路径 cycle->conf_param; //保存参数 cycle->pathes; //路径数组 cycle->open_files; //分配打开的文件描述符,其中这个结构是一 个链表,每个链表节点都有一个n个size的 cycle->shared_memory; //分配n个共享内存节点,这个是一个list, 每个节点都存在n个ngx_shm_zone_t结构,通过next指向链表后面的节点。 cycle->listening; //listening数组 cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module*sizeof(void*));
設定ファイルのユーザー設定キーと値を保存するために使用される conf のパラメータを作成します。同時に、temp_pool に
ストレージ プールを作成します。conf->ctx は、cycle->conf_ctx を指します。 、サイクル、プール、ログを保存し、モジュールのタイプとコマンドのタイプを設定します。
メインの構成ファイル変数の解析を開始します。
設定ファイルの解析処理は主にngx_conf_parseによる間接再帰呼び出しであり、主にメインスコープ、イベントスコープ、httpスコープ、サーバースコープ、ロケーションスコープに分かれて解析が行われます。
解析プロセス中に、構成ファイル (nginx.conf) は 3 つのカテゴリに分割されます:
NGX_CORE_MODULE index Ngx_core_module 0 Ngx_errlog_module 1 Ngx_reg_module 6 Ngx_events_module 3 Ngx_http_module 7
以上、[nginx ソースコード解析] 構成解析 1 を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。