文章目录
nginx的配置文件详解
主配置文件:/usr/local/nginx/conf/nginx.conf
- 默认启动nginx时,使用的配置文件是:安装路径/conf/nginx.conf文件
- 可以在启动nginx时通过-c选项来指定要读取的配置文件
nginx常见的配置文件及其作用
配置文件 | 作用 |
---|---|
nginx.conf | nginx的基本配置文件 |
mime.types | MIME类型关联的扩展文件 |
fastcgi.conf | 与fastcgi相关的配置 |
proxy.conf | 与proxy相关的配置 |
sites.conf | 配置nginx提供的网站,包括虚拟主机常见的配置文件及其作用 |
nginx.conf配置详解
nginx.conf的内容分为以下几段:
- main配置段:全局配置段。其中main配置段中可能包含event配置段
- event {}:定义event模型工作特性
- http {}:定义http协议相关的配置
配置指令:要以分号结尾,语法格式如下:
derective value1 [value2 …];
支持使用变量:
- 内置变量:模块会提供内建变量定义
- 自定义变量:set var_name value
用于调试、定位问题的配置参数
daemon {on|off}; //是否以守护进程方式运行nginx,调试时应设置为off
master_process {on|off}; //是否以master/worker模型来运行nginx,调试时可以设置为off
error_log 位置 级别; //配置错误日志
error_log里的位置和级别能有以下可选项:
位置 | 级别 |
---|---|
file stderr syslog:server=address[,parameter=value] memory:size |
debug:若要使用debug级别,需要在编译nginx时使用–with-debug选项 info notice warn error crit alert emerg |
正常运行必备的配置参数
user USERNAME [GROUPNAME]; //指定运行worker进程的用户和组
pid /path/to/pid_file; //指定nginx守护进程的pid文件
worker_rlimit_nofile number; //设置所有worker进程最大可以打开的文件数,默认为1024
worker_rlimit_core size; //指明所有worker进程所能够使用的总体的最大核心文件大小,保持默认即可
user USERNAME [GROUPNAME]; //指定运行worker进程的用户和组
//user USERNAME [GROUPNAME]; //指定运行worker进程的用户和组
[root@nginx ~]# ps -ef |grep nginx
root 31463 1 0 21:46 ? 00:00:00 nginx: master process nginx
nginx 31464 31463 0 21:46 ? 00:00:00 nginx: worker process
root 31711 31673 0 22:03 pts/0 00:00:00 grep --color=auto nginx
修改指定运行worker进程的用户
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
user nobody;
worker_processes 1;
[root@nginx ~]# systemctl restart nginx
[root@nginx ~]# ps -ef | grep nginx
root 1256 1 0 22:25 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 1257 1256 0 22:25 ? 00:00:00 nginx: worker process
root 1265 1218 0 22:28 pts/0 00:00:00 grep --color=auto nginx
//pid /path/to/pid_file; //指定nginx守护进程的pid文件
[root@nginx ~]# find / -name nginx.pid
/usr/local/nginx/logs/nginx.pid
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /opt/nginx.pid;
[root@nginx ~]# systemctl restart nginx
[root@nginx ~]# find / -name nginx.pid
/opt/nginx.pid
//worker_rlimit_nofile number; //设置所有worker进程最大可以打开的文件数,默认为1024
[root@nginx ~]# ulimit -n
1024
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
user nobody;
worker_processes 1;
worker_rlimit_nofile 65535;
[root@nginx ~]# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
[root@nginx ~]# systemctl restart nginx
[root@nginx ~]# ulimit
//重新打开一个终端,后生效
[root@nginx ~]# ulimit -n
65535
优化性能的配置参数
worker_processes n; //启动n个worker进程,这里的n为了避免上下文切换,通常设置为cpu总核心数-1或等于总核心数
worker_cpu_affinity cpumask …; //将进程绑定到某cpu中,避免频繁刷新缓存
//cpumask:使用8位二进制表示cpu核心,如:
0000 0001 //第一颗cpu核心
0000 0010 //第二颗cpu核心
0000 0100 //第三颗cpu核心
0000 1000 //第四颗cpu核心
0001 0000 //第五颗cpu核心
0010 0000 //第六颗cpu核心
0100 0000 //第七颗cpu核心
1000 0000 //第八颗cpu核心
timer_resolution interval; //计时器解析度。降低此值,可减少gettimeofday()系统调用的次数
worker_priority number; //指明worker进程的nice值
top - 22:37:24 up 9 min, 3 users, load average: 0.16, 0.10, 0.03
Tasks: 171 total, 1 running, 170 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3709.6 total, 3260.0 free, 219.1 used, 230.5 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3264.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND P
1649 nobody 20 0 114308 6232 4652 S 0.0 0.2 0:00.00 nginx 1
1650 root 20 0 0 0 0 I 0.0 0.0 0:00.06 kworke+ 3
1651 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworke+ 3
1653 root 20 0 65428 4436 3772 R 0.0 0.1 0:00.07 top 3
1654 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworke+ 0
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
user nobody;
worker_processes 2;
worker_cpu_affinity 01 10;
[root@nginx ~]# systemctl restart nginx
top - 14:56:02 up 7 min, 3 users, load average: 0.03, 0.03, 0.00
Tasks: 169 total, 1 running, 168 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3709.6 total, 3259.6 free, 219.5 used, 230.5 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 3264.3 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND P
1634 nobody 20 0 114228 5840 4516 S 0.0 0.2 0:00.00 nginx 0
1635 nobody 20 0 114228 5840 4516 S 0.0 0.2 0:00.00 nginx 1
1636 root 20 0 0 0 0 I 0.0 0.0 0:00.01 kworke+ 0
1638 root 20 0 65428 4496 3832 R 0.0 0.1 0:00.11 top 3
//worker_priority number; //指明worker进程的nice值