当前位置: 首页 > 工具软件 > ngx-mask > 使用案例 >

nginx ngx_core_module模块详解

楚雪松
2023-12-01

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;

 

 

 类似资料: