示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#user  nobody;
worker_processes 1;
#error_log logs/error.log error;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

……
}

块配置项

块配置项有一个块配置项名和一堆大括号组成。

块配置项可以嵌套。内层块直接继承外层块,当内外层块中的配置发生冲突时,以哪个块配置为准取决于解析这个配置项的模块。

语法格式

1
配置项名 配置项值1 配置项值2 ……;

注释

在要注释的语句前加上 #

1
#pid        logs/nginx.pid;

单位

1
2
3
4
5
6
7
8
9
10
11
12
13
##### 空间大小 #####
K或者k 千字节
M或者m 兆字节

##### 时间 #####
ms 毫秒
s 秒
m 分钟
h 小时
d 天
w 周
M 月
y 年

变量

使用变量时,在变量前加上 $。一些变量只有少数模块支持,并不是通用的。

基本配置

用于调试进程和定位问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## 是否以守护进程方式运行 Nginx
语法: daemon on|off;
默认: daemon on;

## 是否以 master/worker 方式工作
语法: master_process on|off;
默认: master_process on;

## error 日志的设置
语法: error_log /path/file level;
默认: error_log logs/error.log error;

## 是否处理几个特殊的调试点
语法: debug_points [stop|abort]
通常不会使用这个配置项

## 仅对指定的客户端输出 debug 级别的日志
语法: debug_connection [IP|CIDR]
events {
debug_connection 10.224.66.14;
debug_connection 10.224.66.0/24;
}
这样,仅仅来自以上IP的请求才会输出debug级别的日志。

## 限制 coredump 核心转储文件的大小
语法: worker_rlimit_core size;

## 指定 coredump 文件生成目录
语法: working_directory path;
正常运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## 定义环境变量
语法: env VAR|VAR=VALUE
这个配置项可以让用户直接设置操作系统上的环境变量。

## 嵌入其他配置文件
语法: include /path/file;

## pid 文件的路径
语法: pid path/file;
默认: pid logs/nginx.pid;

## Nginx worker 进程运行的用户及用户组
语法: user username [groupname];
默认: user nobody nobody;

## 指定 Nginx worker 进程可以打开的最大句柄描述符个数
语法: worker_rlimit_nofile limit;

## 限制信号队列
语法: worker_rlimit_sigpending limit;
优化性能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
## Nginx worker 进程个数
语法: worker_processes number;
默认: worker_processes 1;
一般情况下,用户要配置与 CPU 的内核数相等的 worker 进程

## 绑定 Nignx worker 进程到指定的 CPU 内核
语法: worker_cpu_affinity cpumask [cpumask...]
加入有 4 CPU 内核,就可以进行如下配置:
worker_processes 4;
worker_cpu_affinity 1000 0100 0010 0001;

## SSL 硬件加速
语法: ssl_engine device;

## 系统调用 gettimeofday 的执行频率
语法: timer_resolution t;

## Nginx worker 进程优先级设置
语法: worker_priority nice;
默认: worker_priority 0;
事件类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## 是否打开 accept 锁
语法: accept_mutex [on|off]
默认: accept_mutex on
accept_mutex 是 Nginx 的负载均衡锁

## lock 文件的路径
语法: lock_file path/file
默认: lock_file logs/nginx.lock

## 使用 accept 锁后到真正建立连接之间的延迟时间
语法: accept_mutex_delay Nms;
默认: accept_nutex_delay 500ms;

## 批量简历新连接
语法: multi_accept [on|off];
默认: multi_accept off;

## 选择事件模型
语法: use [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];
默认: Nginx 会自动使用最适合的事件模型。

## 每个 worker 的最大连接数
语法: worker_connections number;

参考书籍: 《深入理解Nginx》