1、 nginx.conf配置详解
(1)user配置
user nobody [group];
默认为nobody启动,即使不配置,也默认也是nobody
#指定启动worker进程的用户,master进程用户为root。master用户权限一定要高于worker进程用户的权限。
查看nobody进,它启动额是worker process
[root@yczbora nginx]# ps -ef|grep nobody nobody 2092 20287 0 09:18 ? 00:00:00 nginx: worker process
user LLL;
如果用户设置为LLL,那么启动的worker proces 用户是LLL(前提是系统中有此用户)
(2)worker_processes配置
worker_processes auto; #指定worker进程数量,auto为自动确定
worker_processes 4;
注意:这个参数,如果虚拟机情况,通过热添加方式更改cpu核心数量,不能通过./nginx -s reload方式重载conf文件,必须要nginx -s stop后再启动./nginx才可以。
(3)worker_cpu_affinity
worker_cpu_affinity 10 01; #进程绑定,2核,仅Linux有效
worker_cpu_affinity 1000 0100 0010 0001; #进程绑定,仅Linux有效,4核
(4)gzip配置
gzip off; #默认为off。如果服务端出现瓶颈,网络没问题,则关闭
gzip on; #如果网络带宽出现瓶颈,服务端性能ok,则可以开启。因为如果交互或响应数据量较大且网络带宽较低且服务器性能较高时,为了传输快捷,建议开启。服务端gzip压缩传至客户端,客户端接收到进行解压。
(5)error_log配置
- 跟踪级别:debug, info, notice, warn, error, crit, alert, emerg
- #debug级别需要configure 加--with-debug参数,一般开发过程需要,后期运维上线,则默认为error即可
- error_log /var/log/nginx/error.log [level]; #默认为error级别
- error_log logs/error.log debug; #默认文件为logs/error.log
- error_log /dev/null;
(6)access_log配置
默认开启,即使注释掉,也是开启的
access_log logs/access.log main; #设置访问日志的路径和格式
格式:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
(7)pid 配置
服务启动后,产生一个pid,可以修改配置文件更改放置路径,但此路径必须要有读写模式,否则nginx无法启动
pid logs/nginx.pid; #设置pid位置,默认为logs/nginx.pid
注意:这个参数,修改了pid名称,比如更改为pid logs/lll.pid,则不能通过./nginx -s reload方式重载conf文件,必须要nginx -s stop后再启动./nginx才可以。
(8)进程守护配置
daemon on; daemon off; |
#默认on,以守护进程方式运行NginX。守护进程方式:就是运行nginx后,在后台运行,不占用当前窗口方式,即为守护进程方式。 #调试时使用,关闭后,./nginx执行后,在当前页面运行,不进入后台 |
注意:这个参数,修改了后,则不能通过./nginx -s reload方式重载conf文件,必须要nginx -s stop后再启动./nginx才可以。
(9)master进程
master_process on; master_process off; |
#默认on,独立的master进程,会启动worker子进程进行处理 #master实现自己的功能和work的功能,可以进行处理请求,不会启动worker子进程处理请求,off后,只有一个nginx进程,没有master和worker,便于调试跟踪使用 |
(10)#放在events配置块下
debug_connection 127.0.0.1; | #仅指定客户端输出debug日志 |
debug_connection 192.168.7.0/24; | #仅指定网段输出debug日志 |
worker_connections 1024; | #每个worker可以处理的连接数,默认的,取决于机器本身的性能。 |
(11)coredump
worker_rlimit_core size; #设置coredump文件大小
worker_priority 0; #指定worker进程的优先级,0为默认优先级
working_directory path; #设置coredump路径,worker需要有写权限
(12)环境变量
env VAR|VAR=VALUE; #设置操作系统环境变量,一般相应开发才设置。移植比较好
(13)include配置
include /path/file; #包含配置文件,将其他配置文件的属性加进来了,二次开发用的比较多
include conf/*.conf; #包含配置文件,支持单个文件,以及*号通配符,将其他配置文件的属性加进来了,二次开发用的比较多
(14)rlimit配置
worker_rlimit_nofile limit; #设置每个进程可以打开的最大文件句柄数
worker_rlimit_sigpending limit; #设置每个用户发往NginX的信号队列
(15)进程的优先级
worker_priority 0; #指定worker进程的优先级,0为默认优先级范围-20~20 。值越小,优先级越低
(16)多个work二进程的负载均衡
accept_mutext on; #默认为on,打开负载均衡锁,多个worker负载均衡
accept_mutext off; #关闭负载均衡锁。结果:有些用户会发现自己的访问很慢,有些用户会很快。
accept_mutex_delay 500ms; #取锁延迟时间
lock_file logs/nginx.lock; #负载均衡文件锁,支持原子锁时该项无效。(系统支持原子锁,则此项无效。如果系统不支持原子锁,则此文件锁起作用
(17)
multi_accept off; #默认off,一个worker进程一次接受一个连接
multi_accept on; #一个worker进程一次接受多个连接
use epull; #epull最快,nginx自动选择最优,kqueue | rtsig | epoll | /dev/poll | select | poll | eventport
文章评论