上一篇介绍了 nginx模块的定义。
一个功能首先要有输入,就是配置项,因为数据面需要配置做转发决策,比如access还是deny。
Directives are divided into simple directives and block directives.
简单说就是配置指令分两种,简单指令包括命令和参数,以分号结尾;复杂指令跟一个大括号块; 比如: worker_processes 1; http { server {
}
}
指令根据其所处的位置,有上下文,最外层是main。
- main
- event
- http
- server
- location
- server
有了语法规则,解析也变得容易。第一个单词是命令,在command_t中定义了,依次查找是哪个命令,然后命令对应的函数负责处理后边的参数,
char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
设置到ngx_conf_t *cf。