nginx源码学习
Posted 香农随笔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx源码学习相关的知识,希望对你有一定的参考价值。
我们接着上一篇文章继续来看看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,到这里初始化日志文件就结束了。
以上是关于nginx源码学习的主要内容,如果未能解决你的问题,请参考以下文章