配置文件
单位
时间单位
参数 | 意义 |
---|---|
ms | milliseconds |
s | seconds |
m | minutes |
h | hours |
d | days |
w | weeks |
y | years (365 days) |
空间单位
配置 | 意义 |
---|---|
不写 | bytes |
k/K | kilobytes |
m/M | megabytes |
g/G | gigabytes |
原则
- 配置文件的根目录,为编译时
--PREFIX
指定的路径 - 有遇到目录之类的设置,需要让 nginx 的 user 有读写权限
结构
- main 全局配置
- event 事件模块设置
- http http 核心模块设置
- server 可以有多个
- location 可以有多个
- server 可以有多个
main
- 核心参数
user <username> [<group>]
- 指定 worker process 的属主和属组,属组可以不指定
pid <pid_directory>
- 指定 master process 的 pid 存放路径
worker_rlimit_nofile <number>
- 指定 worker process 可以打开的最大文件句柄数
worker_rlimit_core <file_size>
- 指定 worker process 异常终止后的 core 文件,用于记录和分析问题
- 配合
working_directory <core_file_dir>
使用, 对应目录需要设置的**user**
用户拥有写权限
**
worker_processes <number> | auto
- worker process 的数量,auto 则数量和 cpu 挂钩
- 需要配合
worker_cpu_affinity
充分发挥多核 cpu 性能
worker_cpu_affinity <cpu_mask1> <cpu_mask2> ...
worker_processes
仅仅规定起多少个 worker process,但是没有规定如何 process 用哪几个 cpu 核心cpu_mask
看多少核就几位,其中1表示启用- 假设
worker_processes 2
- 两核 cpu 全部用,则
worker_cpu_affinity 01 10
- 两核 cpu 用一个,则
worker_cpu_affinity 01
- 四核 cpu 全部用,其中 worker1 用 cpu0 和 1 ,worker2 用 cpu2 和 3,则
worker_cpu_affinity 0011 1100
- 四个 cpu 用两个,其中 worker1 用 cpu0,worker2 用 cpu4, 则
worker_cpu_affinity 0001 1000
- 两核 cpu 全部用,则
- 直接设置
auto
就好了
- 假设
worker_priority <number>
- 指定 worker process 的 nice 值(-20~+19),调整运行 nginx 的优先级(越小优先级越高)
- 通常设置为负数,优先调用 nginx
- linux 默认进程的优先级值是 120,最终优先级值是 默认值 + nice 值
**
worker_shutdown_timeout <time>
- 指定 worker process 优雅退出时的超时时间
timer_resolution <time>
- worker process 内部使用的计时器精度,
<time>
越大,系统在用户态和内核态之间的调度越少,性能越高
- worker process 内部使用的计时器精度,
daemon off | on
- 设置 nginx 的运行方式,默认 on
- off 前台,用于用户调试
lock_file <file>
- event 中的
accept_mutex_delay on
设置时生效 - 负载均衡互斥锁文件存放路径
- event 中的
event
use <method>
- nginx 使用哪种事件驱动模型
- 默认配置,无
- 推荐让 nginx 自己选择,即不指定
**
worker_connections <number>
- worker process 能够处理的最大并发连接数
- 默认配置, 1024
- 推荐配置
65535 / worker_processes | 65535
accept_mutex on | off
- 是否打开负载均衡互斥锁,开启时,worker process 会轮流处理到来的请求
- 默认配置 off,每次请求到来时,master process 会询问每个 worker process 看是否能处理请求,耗费性能
accept_mutex_delay <time>
accept_mutex_delay on
时生效- 新连接分配给 worker process 的超时时间,如果对应 worker process 没有响应 master process 对请求的选择事件
- 默认 500ms
- 推荐 200ms
muti_accept on | off
- 一个 worker process 是否可以同时接受所有的新连接
- 默认 off,nginx一个工作进程只能同时接受一个新的连接
- 推荐 on
- 如果nginx使用kqueue连接方法,那么这条指令会被忽略,因为这个方法会报告在等待被接受的新连接的数量
server
server_name <name1> <name2> ...
- 配置基于名称的虚拟主机,匹配方法就是靠请求携带的 host 和 port 正好对应其配置中的 server_name 和listen
name
可以匹配最左和最右通配符、正则- 优先级,从高到低
- 精确匹配
- 最左通配符匹配
- 最右通配符匹配
- 正则匹配
root
alias
| 命令 | 存在的上下文 | 区别 | | —- | —- | —- | | root | http server location if | 会将定义路径和 server 定义的 URI 叠加 | | alias | location | server 映射的 URI 等同于 定义路径 |