如果第一第二个参数都没有被设置而采用的值
结果会被保存在第一个参数中。能用的合并函数包括 ngx_conf_merge_size_value, ngx_conf_merge_msec_value 等等. 可参见 . 问:第一个参数是传值的,那如何能做到将结果保存到第一个参数中?答:这些函数都是由预处理命令定义的(在真正编译之前,它们会被扩展成一些if语句) 同时还需要注意的是错误的产生。函数会往log文件写一些东西,同时返回NGX_CONF_ERROR。这个返回值会将server的启动挂起。(因为被标示为NGX_LOG_EMERG级别,所以错误同时还会输出到标准输出。作为参考,列出了所有的日志级别。) 3.4. 模块定义 接下来我们间接地介绍更深一层:结构体ngx_module_t。该结构体变量命名方式为ngx_http_<module name>_module。它包含模块的内容和指令执行方式,同时也还包含一些回调函数(退出线程,退出进程,等等)。模块定义在有的时候会被用作查找的关键字,来查找与特定模块相关联的数据。模块定义通常像是这样: ngx_module_t ngx_http__module ={
NGX_MODULE_V1,
&ngx_http__module_ctx,/* module context */
ngx_http__commands,/* module directives */
NGX_HTTP_MODULE,/* module type */
NULL,/* init master */
NULL,/* init module */
NULL,/* init process */
NULL,/* init thread */
NULL,/* exit thread */
NULL,/* exit process */
NULL,/* exit master */
NGX_MODULE_V1_PADDING
}; ...仅仅替换掉合适的<module name>就可以了。模块可以添加一些回调函数来处理线程/进程的创建和销毁,但是绝大多数模块都用NULL忽略这些东东。(关于这些回调函数的入参,可以参考 .) 3.5. 模块装载 模块的装载方式取决于模块的类型:handler、filter还是load-balancer。所以具体的装载细节将留在其各自的章节中再做介绍。
相关阅读:
CentOS 6.2实战部署Nginx+MySQL+PHP
搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程