0x00 配置结构

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
30
31
32
33
34
35
# 全局配置块
...
# events 配置块
events {
...
}
# http 配置块
http
{
# http 全局配置块
...
# server 配置块
server
{
# server 全局配置块
...
#location 块
location [PATTERN]
{
...
}
location [PATTERN]
{
...
}
}
# server 配置块
server
{
# server 全局配置块
...
}
# http 全局配置块
...
}
  • 全局配置块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • events 配置块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • http 配置块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server 配置块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • location 配置块:配置请求的路由,以及各种页面的处理情况。

0x01 示例配置

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 指定运行 nginx 的用户
# 格式:user 用户名 [用户组];
user www www;

# nginx 的工作进程数
# 格式:worker_processes 进程数;
worker_processes 4;

# pid 文件的存放路径
# 格式:pid 文件路径;
pid logs/nginx.pid;

# 指定错误日志文件存放路径
# 格式:error_log 文件路径 [错误级别];
# 错误级别包括:DEBUG | info | notice | warn | error | crit | alert | emerg
error_log logs/logs.log warn;

# 指定 worker 进程打开文件最大数目限制
# 格式:worker_rlimit_nofile 最大打开文件数;
worker_rlimit_nofile 10000;

events {
# 指定每个 worker 进程同时打开的最大连接数
# 格式:worker_connections 最大连接数;
# 此值不能大于操作系统支持的打开的最大文件句柄数
worker_connections 1024;

# 设置是否允许同时接受多个连接
# 格式:multi_accept on|off;
multi_accept on;

# 设置事件驱动模型
# 格式:use 事件驱动模型;
# 可填内容:select | poll | kqueue | epoll | rtsig | /dev/poll | eventport
# 推荐使用 use epoll;
use epoll;
}

http {
# 引入「文件扩展名与文件类型映射表」的配置文件
include mime.types;

# 指定默认HTTP 响应的 Content-Type 值
# 格式:default_type type;
default_type text/plain;

# 指定连接日志格式
# 格式:log_format 格式名 格式字符串;
log_format myFormat '$remote_addr$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';

# 指定连接日志文件存放路径
# 格式:access_log 存放文件路径 日志格式;
access_log logs/access_logs.log myFormat;

# 指定连接超时时间
# 格式:keepalive_timeout 超时秒数
keepalive_timeout 60;

# 指定是否使用sendfile系统调用来传输文件
# 格式:sendfile on|off;
# 推荐开启
sendfile on;

server {
# 指定 server 监听的端口
# 格式:listen 端口号;
listen 80;

# 指定 server 主机名,支持域名、IP,可以使用通配符或正则表达式,支持多个
# 格式:server_name 主机名...;
server_name www.0php.net;

# 指定站点目录
# 格式:root 目录名;
root /www/public;

# 指定默认页面,可多个,优先匹配第一个存在的
# 格式:index 文件名...;
index index.html index.htm index.php;

# location 块
# 格式: location [=|~|~*|^~] 正则表达式 {...}
location ~ [^/]\.php(/|$) {
# 指定 fastcgi 代理
# 格式:fastcgi_pass fastcgi地址
fastcgi_pass 127.0.0.1:9000;

# 指定 fastcgi 默认请求文件
# 格式:fastcgi_index 默认请求文件
fastcgi_index index.php;

# 引入 fastcgi 的配置文件
include fastcgi.conf;
}

# 其它 location 均未匹配则会匹配此块
location / {
# 找指定路径下文件,如果不存在,则转给后面的文件执行
# 格式:try_files 文件路径...;
try_files $uri $uri/ /index.php?$query_string;
}
}
}