Nginx的配置文件

本文最后更新于 2024年1月11日 晚上

Nginx

Nginx的配置文件

从配置文件开始到 events 块之间的内容

1
2
3
4
5
worker_processes  1;

events {
worker_connections 1024;
}

主要设置一些影响nginx 服务器整体运行的配置指令.

主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志

存放路径和类型以及配置文件的引入等。

  • worker_processes:
1
worker_processes  1;

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约,一般有多少个CPU核就配置多少

  • events的配置:
1
2
3
events {
worker_connections 1024;
}

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024.

这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

http全局块

http全局块配置的指令包括文件引入, MIME-TYPE定义, 日志自定义, 连接超时时间, 单连接请求数上限等.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {
listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

其他配置

  • 引入其他配置文件
1
include       mime.types;
  • 默认的文件类型
1
default_type  application/octet-stream;
  • 优化配置
1
sendfile        on;
  • 超时时间
1
keepalive_timeout  65;

server块★

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。后面会详细介绍虚拟主机的概念。

每个 http 块可以包括多个 server 块,每个 server 块就相当于一个虚拟主机。

每个 server 块也分为全局 server 块,以及可以同时包含多个 location块。

其他配置
  • listen

    1
    listen	80;

    用于配置网络监听. 主要有以下三种配置语法结构:

    1
    2
    3
    listen *:80 | *:8080;   # 监听所有80端口和8080端口
    listen IP_address:port; # 监听制定的地址和端口号
    listen IP_address; # 监听指定ip地址的所有端口
  • server_name

    1
    server_name  www.xxx.com;

    用于虚拟主机的配置. 通常分为以下两种:

    1. 基于名称的虚拟主机配置

      1
      server_name www.xxx.com;
    2. 基于IP地址的虚拟主机配置

      这种结构不需要考虑通配符和正则表达式的问题.

      1
      server_naem 192.168.3.1
location
1
2
3
4
 location / {
root html;
index index.html index.htm;
}

这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

一个 server 块可以配置多个 location 块。

语法:

1
2
3
4
5
location [ = | ~ | ~* | ^~ ] uri {
root /usr/local/nginx/test;
index test.html;

}
  1. = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

  2. ~:用于表示 uri 包含正则表达式,并且区分大小写。

  3. ~*:用于表示 uri 包含正则表达式,并且不区分大小写。

  4. ^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

  5. 不接任何符号: 代表模糊匹配

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

优先级: = > ^~ > ~ | ~* >模糊匹配

  • root: 请求的文件的目录

  • index: 用于设置网站的默认首页

    1
    index filename ...;

    后面的文件名称可以有多个, 中间用空格隔开.

    1
    index index.html index.htm;

Nginx的配置文件
https://blog.noobbei.top/2024/01/10/Nginx的配置文件/
作者
Godbei
发布于
2024年1月10日
更新于
2024年1月11日
许可协议