ngx_core_module模块是nginx启动加载的第一个模块,是nginx的核心模块之一;其主要用来保存不属于任何{}且不包括{}的全局配置项。nginx启动时在解析配置之前调用ngx_core_module_create_conf函数创建保存配置项的结构体,配置解析完后调用ngx_core_module_init_conf函数处理配置文件中没有设置但属于该模块负责的配置项。
ngx_core_module模块负责处理的配置项:
daemon [on|off]
是否以守护进程方式启动nginx。默认:daemon on。
master_process [on|off]
是否以master/worker方式运行nginx,当值为off时就不会fork出worker进程。默认:master_process on
timer_resolution interval
Worker进程中gettimeofday函数调用的时间间隔,gettimeofday函数每interval调用一次,这样降低了缓存时间的更新频率。默认每接收到一个kernel发送到用户态的事件就调用一次。
pid file
设置保存main进程的进程ID的文件名。默认:pid nginx.pid。
lock_file file
设置文件锁的路径名。默认:lock_filelogs/nginx.lock。
worker_processes number| auto
设置worker进程的个数,值为auto时表示worker进程数等于当前在线的CPU个数。默认:worker_processes1。
debug_points abort | stop
该配置项用于调试。Abort表示当进程出现异常时产生一个core dump文件,stop表示当进程出现异常时停止当前进程。默认此配置项未生效。
user user [group]
Worker进程所属的用户及组,当group参数没有配置时,group等于user。默认:usernobody nobody。
worker_priority number
设置worker进程的优先级(参考nice命令),默认:worker_priority1。
worker_cpu_affinity cpumask…
将worker进程与cpu绑定。默认worker进程不绑定到CPU。
worker_rlimit_nofile number
worker进程打开的最大文件描述述个数。
worker_rlimit_core size
worker进程生成的coredump文件的最大大小。
worker_rlimit_sigpending number
worker进程的信号队列中最多可以有多少个信号。
worker_directory directory
定义worker进程的工作目录。
env variable[=value]
默认情况下,worker子进程会删除掉所有从父进程继承过来的环境变量(除TZ变量外)。env配置项用于保存一些继承过来的环境变量而不被删除。默认: env TZ。
ngx_core_module模块保存配置项的结构体:
typedef struct {
ngx_flag_t daemon; //保存daemon配置项
ngx_flag_t master; //保存master_process 配置项
ngx_msec_t timer_resolution; //保存timer_resolution配置项
ngx_int_t worker_processes; //保存worker_processes配置项
ngx_int_t debug_points; //保存debug_points 配置项
ngx_int_t rlimit_nofile; //保存worker_rlimit_nofile配置项
ngx_int_t rlimit_sigpending; //保存worker_rlimit_sigpending配置项
off_t rlimit_core; // 保存worker_rlimit_core配置项
int priority; //保存worker_priority配置项
ngx_uint_t cpu_affinity_n; //绑定的CPU个数
uint64_t *cpu_affinity; //保存worker_cpu_affinity配置项
char *username; //对应user配置项中指定的用户名
ngx_uid_t user; //保存用户ID
ngx_gid_t group; //保存组ID
ngx_str_t working_directory; //对应worker_directory配置项
ngx_str_t lock_file; //对应lock_file配置项
ngx_str_t pid; //对应pid配置项
ngx_str_t oldpid;
ngx_array_t env; //对应 env配置项
char **environment;
#if (NGX_THREADS)
ngx_int_t worker_threads;
size_t thread_stack_size;
#endif
} ngx_core_conf_t;