我们接着上一篇文章继续来看看 ngx_regex_init()函数。搜索 ngx_regex_init 得到位置为src/core/ngx_regex.c:ngx_regex_init(void)。 进入 ngx_regex.c 文档
如果你的 Nginx 有添加 NGX_PCRE 模块,那么这个函数则会执行。什么是 PCRE 呢? PCRE(Perl Compatible Regular Expressions) 是一个 Perl 库,用 PCRE 来解决C语言中使用正则表达式的问题。像 Nginx 重写功能就需要有 PCRE 库支持。我们不深入讨论。 接着ngx_pid = ngx_getpid() 函数,取得当前进程的 ID 号。
log = ngx_log_init(ngx_prefix);
if (log == NULL) {
return 1;
}
日志文件初始化。我们去nginx_log.c文件中看看。
在 nginx_log.h 中 #define NGX_LOG_NOTICE 6
在ngx_auto_config.h 中 #define NGX_ERROR_LOG_PATH “logs/error.log” 这个比较简单,都是简单的赋值。 我们接着看下面的内容。
prefix 没有赋值,所以为 0 。执行 else,prefix=NGX_PREFIX。 ngx_auto_config.h 文件中
#define NGX_PREFIX /usr/local/nginx/”
下面的内容就是给 p 赋值。 最后 p = “/usr/local/nginx/logs/error.log”。
接下来才是最终目的。
ngx_open_file 函数,宏定义 : #define ngx_open_file(name,mode,create,access) open((const char*) name, mode|create, access)。 open 函数是系统函数。主要作用是打开和创建文件。
ok,到这里初始化日志文件就结束了。谢谢大家观看!