核心配置指令
作为一款高性能的 HTTP 服务器软件,Nginx 的核心功能就是应对 HTTP 请求的处理。
由于具体硬件、操作系统及应用场景的不同,需要 Nginx 在对 HTTP 请求的处理方法上进行不同的调整,为了应对这些差异,Nginx 提供了多种配置指令,让用户可以根据实际的软硬件及使用场景进行灵活配置。
配置文件解析
可以使用nginx -t
检测默认配置文件的位置:
1 2 3 |
|
不同操作系统,不同 nginx 版本之间的默认配置文件位置可能不同
配置文件默认保存的目录可能为:
Debain/Alpine: /etc/nginx
Mac: /usr/local/etc/nginx
其它可能: /usr/local/nginx/conf
/etc/nginx
的默认内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
docker 可以使用nginx "daemon off;"
进行非守护进程方式运行 nginx
nginx 的主配置文件(/etc/nginx/nginx.conf
)一般是不需要动的,我们只需要在/etc/nginx/conf.d
目录下新建自己的配置文件即可,
因为在主配置文件 /etc/nginx/nginx.conf
文件的最后有这么一句 include /etc/nginx/conf.d/*.conf;
,会自动将 conf.d
目录下的配置文件引入
做完配置以后,可以执行nginx -t
验证配置内容是否有误
执行nginx -s reload
重新载入
配置文件目录
配置文件默认目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
其中,以".default"
为扩展名的文件是 Nginx 配置文件的配置样例文件。各配置文件的说明如下
- fastcgi_params: Nginx 在配置 FastCGI 代理服务器时会根据 fastcgi_params 文件的配置向 FastCGI 服务器传递变量,该配置文件现已由 fastcgi.conf 代替
- fastcgi.conf: 为了规范配置指令 SCRIPT_FILENAME 的用法,引入 FastCGI 变量传递配置
- mine.types: MIME 类型映射表,Nginx 会根据服务器文件后缀名在映射关系中获取所属文件类型,将文件类型添加到 HTTP 消息头字段 "Content-Type"中
- nginx.conf: Nginx 默认的配置入口文件
- scgi_params: Nginx 在配置 SCGI 代理服务器时会根据 scgi_params 文件的配置向 SCGI 服务器传递变量
- uwsgi_params: Nginx 在配置 uWSGI 代理服务时会根据 uwsgi_params 文件的配置向 uWSGI 服务器传递变量
- koi-utf、koi-win、win-utf: 这 3 各文件是 KOI8-R 编码转换的映射文件,因为 Nginx 的作者是俄罗斯人,在 Unicode 流行之前,KOI8-R 是使用最为广泛的俄语编码
配置文件结构
为了便于了解 Nginx 配置文件的内部结构,这里约定几个名词的定义
- 配置指令: 在配置文件中,由 Nginx 约定的内部固定字符串,Nginx 官方文档中的英文单词为 directive,我们统一称为配置指令,简称指令。指令是 Nginx 中功能配置的最基本元素,Nginx 的每个功能配置都是通过多个不同的指令组合来实现的。
- 配置指令值: 每个配置指令都有对应的内容来表示该指令的控制参数,简称指令值。指令值可以是字符串、数字或变量等多种类型。
- 配置指令语句: 指令与指令值组合构成指令语句。一条指令语句可以包含多个配置指令值,在 Nginx 配置文件中,每条指令语句都要用
";"
作为语句结束的标识符 - 配置指令域: 配置指令值有时会是由
"{}"
括起来的指令语句集合,简称指令域。指令域既可以包含多个指令语句,也可以包含多个指令域 - 配置全局域: 配置文件
nginx.conf
中上层没有其他指令域的区域被称为配置全局域,简称全局域。