ngx_command_t 结构体中type成员的取值及其意义

ngx_command_t 结构体

struck ngx_command_s {
		ngx_str_t name;
		ngx_uint_t type;
		char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
		ngx_uint_t conf;
		ngx_uint_t offset;
		void *post;
};

type类型 type取值 意义
处理配置项时获取当前配置块的方式 NGX_DIRECT_CONF 一般由NGX_CORE_MODULE 类型的核心模块使用,仅与下面的NGX_MAIN_CONF同时设置,表示模块需要解析不属于任何{}内的全部配置项.它实际上会指定set方法里的第3个参数conf的值, 使之指向每个模块解析全局配置项的配置结构体
NGX_ANY_CONF 目前未使用,配置与否均无意义
配置项可以在哪些{}配置块出现 NGX_MAIN_CONF 配置项可以出现在全局配置中,既不属于任何{}配置块
NGX_EVENT_CONF 配置项可以出现在events{}块内
NGX_MAIL_SRV_CONF 配置项可以出现在server{}块内,然而该server{}块必须属于mail{}块或者imap{}块
NGX_MAIL_MAIN_CONF 配置项可以出现在mail{}块或者imap{}块内
NGX_HTTP_MAIN_CONF 配置项可以出现在http{}块
NGX_HTTP_SRV_CONF 配置项可以出现在server{}块内,然而server块必须属于http{}块
NGX_HTTP_LOC_CONF 配置项可以出现在location{}块内,然而该location块必须属于http{}块
NGX_HTTP_UPS_CONF 配置项可以出现在upstream{}块内, 然而该upstream块必须属于http{}块
NGX_HTTP_SIF_CONF 配置项可以出现在server块内的if{}块中,目前仅有rewrite模块会使用,该if{}块必须属于http{}块
NGX_HTTP_LIF_CONF 配置项可以出现在location块内的if{}块中,目前仅rewrite模块使用,该if{}块必须属于http{}块
NGX_HTTP_LMT_CONF 配置项可以出现在limit_except{}块内,然而该limit_except块必须属于http{}块
限制配置项的参数个数 NGX_CONF_NOARGS 配置项不携带任何参数
NGX_CONF_NOARGS 配置项不携带任何参数
NGX_CONF_TAKE1 配置项可以携带1个参数
NGX_CONF_TAKE2 配置项可以携带2个参数
NGX_CONF_TAKE3 配置项可以携带3个参数
NGX_CONF_TAKE4 配置项可以携带4个参数
NGX_CONF_TAKE5 配置项可以携带5个参数
NGX_CONF_TAKE6 配置项可以携带6个参数
NGX_CONF_TAKE7 配置项可以携带7个参数
NGX_CONF_TAKE12 配置项可以携带1个或2个参数
NGX_CONF_TAKE13 配置项可以携带1个或3个参数
NGX_CONF_TAKE23 配置项可以携带2个或3个参数
NGX_CONF_TAKE123 配置项可以携带1~3个参数
NGX_CONF_TAKE1234 配置项可以携带1~4个参数
限制配置项后的参数出现的形式 NGX_CONF_ARGS_NUMBER 目前未使用,无意义
NGX_CONF_BLOCK 配置项定义了一种新的{}块
NGX_CONF_ANY 不验证配置项携带的参数个数
NGX_CONF_FLAG 配置项携带的参数只能是1个,并且参数的值只能是on或者off
NGX_CONF_1MORE 配置项携带的参数个数必须超过1个
NGX_CONF_2MORE 配置项携带的参数个数必须超过2个
NGX_CONF_MULTI 表示当前配置项可以出现在任意块中(包括不属于任何块的全局配置),它仅用于配合其他配置项使用,type中未加NGX_CONF_MULTI时,如果一个配置项出现在type成员未标明配置块中,那么Nginx会认为该配置项违法,最后将导致Nginx启动失败.但如果配置项中加入了NGX_CONF_MULTI,则认为配置项一定是合法的.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章