本节我们讲述nginx配置文件相关的一些内容。
1. 配置解析相关函数实现
1) 函数ngx_conf_read_token()
函数ngx_conf_read_token()会从配置文件中不断的读取数据,直到遇到如下情况:
-
遇到错误,返回NGX_ERROR
-
遇到以”;”结尾指令,返回NGX_OK
-
遇到以”{“开始的配置块,返回NGX_CONF_BLOCK_START
-
遇到以”}”结尾配置块,返回NGX_CONF_BLOCK_DONE
-
读取到配置文件结尾,返回NGX_CONF_FILE_DONE
下面我们来对该函数进行简单的分析:
2) 函数ngx_conf_include()
这里处理include
配置指令。如果不包含”*?[“这样的模式匹配字符串,则可以直接打开相应的文件进行ngx_conf_parse()处理,否则这里用到glob()函数匹配文件,再分别对每一个文件进行处理。
3) 函数ngx_conf_full_name()
nginx中有一个NGX_PREFIX
和NGX_CONF_PREFIX
,这里用于配置文件地址。如果没有指定NGX_CONF_PREFIX
,则默认的配置文件地址为NGX_PREFIX/conf/nginx.conf
。
4) 函数ngx_conf_open_file()
这里如果提供了name
的话(即name->len>0),则首先从cycle->open_files
链表中查看该文件是否打开过,如果找到则直接返回该文件;否则向该链表中添加一条记录。这里name->len
为0的话,则表明打开的是一个标准错误输出文件。
5) 函数ngx_conf_flush_files()
对所有已打开文件调用对应的flush()方法刷新文件。
6) 函数ngx_conf_log_error()
用于打印配置文件检查时发现的相应错误。
7) 函数ngx_conf_set_flag_slot()
这里conf
是该命令对应模块所关联着的上下文对象,例如对于ngx_core_module
,其所关联的上下文对象就为ngx_core_conf_t。请参看:conf_ctx 4级指针结构
。
这里即通过命令设置conf对应字段的值。
8) 函数ngx_conf_set_str_slot()
设置字符串字段的值。
9) 函数ngx_conf_set_str_array_slot()
conf上下文中某个字段类型为字符串数组类型,通过此函数往该数组中添加元素。
10) 函数ngx_conf_set_keyval_slot()
设置key/value值。
11) 函数ngx_conf_set_num_slot()
conf上下文中某个字段类型为ngx_int_t
类型,通过本函数设置cmd所关联的上下文该字段的值。
12) 函数ngx_conf_set_size_slot()
conf上下文中某个字段类型为size类型,通过本函数设置cmd所关联的上下文该字段的值。
查看ngx_parse_size()函数,目前支持的单位有: K/k, M/m,默认的字节单位
比如设置某一个字段为: 10K,则最后会被转换为10*1024
13) 函数ngx_conf_set_off_slot()
conf上下文中某个字段类型为offset类型,通过本函数设置cmd所关联的上下文该字段的值。当前支持的单位有:K/M/G
14) 函数ngx_conf_set_msec_slot()
conf上下文中某个字段类型为时间
类型,通过本函数设置cmd所关联的上下文该字段的值。例如:2001y 1M 1d
表示为2001年1月1日。
15) 函数ngx_conf_set_sec_slot()
conf上下文中某个字段类型为时间
类型,通过本函数设置cmd所关联的上下文该字段的值。
16) 函数ngx_conf_set_bufs_slot()
设置一个ngx_bufs_t
数据。
17) 函数ngx_conf_set_enum_slot()
设置一个枚举类型值。
18) 函数ngx_conf_set_bitmask_slot()
设置掩码位。
19) 函数ngx_conf_deprecated()
这里主要是打印相关提示,说明某一个指令已经过时。
20) 函数ngx_conf_check_num_bounds()
主要是用于检查所设定的值是否在某个区间范围内。
[参看]
-
初识nginx——配置解析篇
-
Nginx 配置项参数解析
-
Nginx开发从入门到精通
-
Nginx——-配置文件解析ngx_conf_handler
-
Command-line parameters
-
图解Nginx 中的4级指针