Skip to content

核心配置指令

作为一款高性能的 HTTP 服务器软件,Nginx 的核心功能就是应对 HTTP 请求的处理。
由于具体硬件、操作系统及应用场景的不同,需要 Nginx 在对 HTTP 请求的处理方法上进行不同的调整,为了应对这些差异,Nginx 提供了多种配置指令,让用户可以根据实际的软硬件及使用场景进行灵活配置。

配置文件解析

可以使用nginx -t检测默认配置文件的位置:

1
2
3
➜  ~ nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

不同操作系统,不同 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
user  nginx;
worker_processes 1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections 1024;
}
http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
}

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
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types
├── mime.types.default
├── nginx.conf
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf

其中,以".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中上层没有其他指令域的区域被称为配置全局域,简称全局域。