全部NGX_DIRECT_CONF都是和NGX_MAIN_CONF同時出現的。NGX_DIRECT_CONF表示,配置文件對應的結構已經建立。對應NGX_CORE_MODULE類型的模塊,且模塊ngx_modules[]->ctx(上下文環境)成員ngx_core_module_t的create_conf不爲空。spa
Directive only in the main configuration file,例如已經提供的配置指令daemon,master_process等。debug
例如,對應配置usr root; create_conf不爲空。code
typedef struct { ngx_str_t name; void *(*create_conf)(ngx_cycle_t *cycle); char *(*init_conf)(ngx_cycle_t *cycle, void *conf); } ngx_core_module_t; static ngx_core_module_t ngx_core_module_ctx = { ngx_string("core"), ngx_core_module_create_conf, ngx_core_module_init_conf };
絕大多數NGX_MAIN_CONF和NGX_DIRECT_CONF是同時出現的。對於單獨出現的NGX_MAIN_CONF表示,配置文件對應的結構尚未建立。配置文件中main區域的指令,都具備這個類型。 對應NGX_CORE_MODULE類型的模塊,且模塊ngx_modules[]->ctx(上下文環境)成員ngx_core_module_tgx_core_module_t的create_conf爲空。string
Directive only in the main configuration level,例如 http、mail、events、error_log等。it
例如,對應配置error_log /usr/local/sms/logs/cache.log debug; create_conf爲空io
static ngx_core_module_t ngx_errlog_module_ctx = { ngx_string("errlog"), NULL, NULL };
Directive can be used in at any level / directive,即該配置指令能夠出如今任意配置級別上。例如include mime.typesevent