Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于 Web 服务、负载均衡、缓存等场景。Nginx 的配置文件是其核心部分,通过配置文件可以控制 Nginx 的行为。
一、Nginx配置文件结构
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf
,也可能包含其他子配置文件(如 sites-enabled/
目录下的文件)。配置文件由多个 指令块 组成,每个指令块包含一组相关的配置指令。Nginx配置文件的基本结构如下:
# 全局块
user www-data;
worker_processes auto;
pid /run/nginx.pid;
# events 块
events {
worker_connections 1024;
}
# http 块
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# server 块
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
}
1、 全局块
- 从配置文件开始到
events
块之间的内容。 - 主要设置影响 Nginx 整体运行的指令,如运行用户、进程数、日志路径等。
- 示例:
user nginx; # 指定运行 Nginx 的用户
worker_processes auto; # 根据 CPU 核心数自动分配进程数
error_log /var/log/nginx/error.log; # 日志路径
pid /run/nginx.pid; # 进程 PID 存放路径
2、 events块
- 用于配置 Nginx 的网络连接相关指令。
- 主要指令包括
worker_connections
,用于设置每个 worker 进程的最大连接数。 - 示例:
events {
worker_connections 1024; # 每个进程支持的最大连接数
}
3、 http块
- 是配置文件的核心部分,包含
http
全局块、server
块和location
块。 http
全局块:设置影响所有服务器的指令,如日志格式、文件类型映射等。server
块:定义虚拟主机的配置,包括监听端口、域名、根目录等。location
块:用于匹配请求的 URL,并定义对应的处理方式。- 示例:
http {
include mime.types; # 文件类型映射表
default_type application/octet-stream; # 默认文件类型
sendfile on; # 开启高效文件传输
keepalive_timeout 65; # 长连接超时时间
server {
listen 80; # 监听端口
server_name example.com; # 域名
location / {
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认首页文件
}
}
}
二、常用指令详解
1、 worker_processes
worker_processes
用于设置 Nginx 工作进程的数量。通常设置为 auto
,表示根据 CPU 核心数自动调整。
worker_processes auto;
2、 worker_connectionsworker_connections
用于设置每个工作进程允许的最大连接数。它与 worker_processes
一起决定了 Nginx 的最大并发连接数。
events {
worker_connections 1024;
}
3、 listenlisten
用于指定服务器监听的端口和 IP 地址。例如:
server {
listen 80; # 监听 80 端口
listen 127.0.0.1:8080; # 监听 127.0.0.1 的 8080 端口
}
4、 server_nameserver_name
用于指定服务器的域名。可以配置多个域名,用空格分隔。
server {
server_name example.com www.example.com;
}
5、 location
location
用于定义 URL 路径的匹配规则和处理方式。常见的匹配方式有:
- 精确匹配: 使用
=
,例如location = /about { ... }
。 - 前缀匹配: 使用
/
,例如location /images/ { ... }
。 - 正则匹配: 使用
~
或~*
,例如location ~ \.php$ { ... }
。
location / {
root /var/www/html;
index index.html;
}
location /images/ {
root /var/www/images;
}
三、简单的server配置示例
以下是一个简单的 Nginx 配置示例,用于托管一个静态网站:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
location /images/ {
root /var/www/images;
}
}
}
配置解析:
1、 全局块:
2、 user www-data;
:以 www-data
用户身份运行 Nginx。
worker_processes auto;
:根据 CPU 核心数自动调整工作进程数量。
pid /run/nginx.pid;
:指定 PID 文件路径。
3、 events 块:
4、 worker_connections 1024;
:每个工作进程最多处理 1024 个连接。
5、 http 块:
6、 include /etc/nginx/mime.types;
:引入 MIME 类型配置文件。
default_type application/octet-stream;
:设置默认 MIME 类型。
7、 server 块:
8、 listen 80;
:监听 80 端口。
server_name example.com;
:指定域名为 example.com
。
location / { ... }
:处理根路径 /
,静态文件位于 /var/www/html
目录下。
location /images/ { ... }
:处理 /images/
路径,静态文件位于 /var/www/images
目录下。
四、总结
Nginx 的配置文件结构清晰,指令丰富,能够满足各种复杂的 Web 服务需求。通过本文的介绍,你应该已经掌握了 Nginx 配置文件的基本结构、常用指令以及如何配置一个简单的静态网站。接下来,你可以尝试更复杂的配置,如反向代理、负载均衡等。