Nginx 是一款高性能的 HTTP 和反向代理服务器,广泛应用于负载均衡、缓存、静态资源服务等场景。要充分利用 Nginx 的强大功能,了解其配置文件的结构和语法至关重要。本文将详细介绍 Nginx 配置文件的基本构成及常用指令。
Nginx 配置文件结构
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf
,其主要结构分为以下几个部分:
- 全局块
- 事件块
- HTTP 块
- 服务器块(Server Block)
- 位置块(Location Block)
1. 全局块
全局块包含一些全局配置参数,主要用于设置 Nginx 的运行环境。例如:
user www-data; # 运行 Nginx 的用户
worker_processes auto; # 工作进程数量,auto 会根据 CPU 核心数自动设置
pid /var/run/nginx.pid; # PID 文件位置
error_log /var/log/nginx/error.log; # 错误日志
2. 事件块
事件块设置与请求处理相关的选项,包括连接数和时间等。例如:
events {
worker_connections 1024; # 每个进程最大连接数
}
3. HTTP 块
HTTP 块是配置 Nginx 处理 HTTP 请求的核心部分,里面可以包含多个服务器块和全局 HTTP 配置。例如:
http {
include /etc/nginx/mime.types; # 引入 MIME 类型配置
default_type application/octet-stream; # 默认 MIME 类型
sendfile on; # 启用高效文件传输
keepalive_timeout 65; # Keep-Alive 超时时间
gzip on; # 启用 Gzip 压缩
gzip_types text/plain application/json; # 压缩类型
# 定义一个服务器块
server {
listen 80; # 监听80端口
server_name example.com; # 服务器域名
location / {
root /var/www/html; # 网站根目录
index index.html index.htm; # 默认首页
}
location /api {
proxy_pass http://backend; # 代理请求到后端服务
}
}
}
4. 服务器块
每个服务器块都是一个虚拟主机配置,能够根据请求的域名和端口组合响应不同的请求。常用指令包括 listen
、server_name
以及 location
等。
例如,配置多个服务器块:
server {
listen 80;
server_name site1.com;
location / {
root /var/www/site1;
index index.html;
}
}
server {
listen 80;
server_name site2.com;
location / {
root /var/www/site2;
index index.html;
}
}
5. 位置块
位置块用于匹配不同的请求 URI,可以实现 URL 重写、反向代理等多种功能。位置块的匹配顺序和优先级非常重要。以下是常用的匹配类型:
location /
:匹配所有请求location = /test
:精确匹配请求location ~ \.php$
:正则匹配请求
示例:
location /images {
alias /var/www/images; # 将请求的/images/路径映射到/var/www/images
}
location ~ \.php$ {
include fastcgi_params; # 引入 FastCGI 参数
fastcgi_pass 127.0.0.1:9000; # PHP-FPM 进程
fastcgi_index index.php; # 指定默认文件
}
总结
Nginx 的配置文件虽然语法简单,但其配置灵活性和功能强大,使得用户可以根据需求灵活设置。通过合理配置全局、事件、HTTP、服务器和位置块,可以实现各种复杂的 web 服务环境。掌握这些基本知识后,用户可以更有效地使用 Nginx 提高网站性能和安全性。