第2章 Nginx 配置文件解析
——掌握核心配置,打造高性能Web服务器
本章将深入解析 Nginx 的配置文件结构,学习如何组织配置、使用变量与正则表达式,并介绍最佳实践,让你的 Nginx 配置更清晰、更高效。
2.1 核心配置文件结构
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf(Linux)或 /usr/local/etc/nginx/nginx.conf(macOS),采用 模块化、分层次 的结构。
2.1.1 主要配置块
Nginx 配置由多个 上下文(Context) 组成,每个上下文包含特定类型的指令:
| 配置块 | 作用 | 示例 |
|---|---|---|
main(全局) | 影响整个 Nginx 进程的配置(如用户、worker 进程数) |
user www-data;
worker_processes auto;
| events | 配置连接处理模型(如最大并发连接数) |
events {
worker_connections 1024;
}
| http | 定义 HTTP 服务器相关配置(如虚拟主机、代理、缓存) |
http {
server {
listen 80;
server_name example.com;
}
}
| server | 定义一个虚拟主机(可包含多个 location) |
server {
listen 80;
root /var/www/html;
}
| location | 匹配特定 URL 路径,定义如何处理请求 |
location /images/ {
alias /data/images/;
}
| upstream | 定义后端服务器组(用于负载均衡) |
upstream backend {
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
2.2 配置文件语法详解
2.2.1 指令与上下文
- 指令(Directive):控制 Nginx 行为的命令,如
listen,server_name,proxy_pass。 - 上下文(Context):指令的作用域,如
http,server,location。
✅ 正确示例(指令在正确的上下文中):
http {
server {
listen 80; # ✅ server 块内
location / {
root /var/www; # ✅ location 块内
}
}
}
❌ 错误示例(指令放错位置):
http {
listen 80; # ❌ listen 不能在 http 块,必须在 server 块
}
2.2.2 变量与正则表达式
Nginx 支持 内置变量 和 自定义变量,常用于动态配置:
常用内置变量
| 变量 | 说明 |
|---|---|
$host | 请求的主机名(如 example.com) |
$uri | 当前请求的 URI(不包含查询参数) |
$args | 查询字符串(如 ?name=john) |
$remote_addr | 客户端 IP 地址 |
$request_method | HTTP 方法(GET/POST 等) |
示例:记录客户端 IP 和请求方法
location / {
access_log /var/log/nginx/access.log "$remote_addr - $request_method $uri";
}
正则表达式匹配
Nginx 使用 ~(区分大小写)、~*(不区分大小写)进行正则匹配:
location ~* \.(jpg|png|gif)$ { # 匹配所有图片请求
expires 7d; # 设置缓存 7 天
}
2.2.3 include 指令的使用
include 允许拆分配置文件,提高可维护性:
http {
include /etc/nginx/conf.d/*.conf; # 加载所有子配置
include /etc/nginx/sites-enabled/*;
}
典型目录结构:
/etc/nginx/
├── nginx.conf # 主配置
├── conf.d/ # 通用配置片段
├── sites-available/ # 可用的虚拟主机配置
├── sites-enabled/ # 启用的虚拟主机(符号链接)
2.3 配置最佳实践
2.3.1 配置文件组织方式
✅ 推荐结构:
http {
# 全局配置(gzip、日志格式等)
include /etc/nginx/conf.d/*.conf;
# 虚拟主机配置
include /etc/nginx/sites-enabled/*;
}
conf.d/:存放通用配置(如gzip.conf,proxy_settings.conf)。sites-available/:存放所有虚拟主机配置(如example.com.conf)。sites-enabled/:通过符号链接启用站点(ln -s ../sites-available/example.com.conf)。
2.3.2 注释与文档规范
# 定义上游服务器(负载均衡)
upstream backend {
server 10.0.0.1:8080 weight=3; # 主服务器,权重 3
server 10.0.0.2:8080 backup; # 备用服务器
}
# 静态文件服务配置
server {
listen 80;
server_name static.example.com;
location / {
root /var/www/static; # 静态文件目录
expires 1d; # 缓存 1 天
}
}
2.3.3 配置版本控制
建议将 Nginx 配置纳入 Git 管理:
cd /etc/nginx
git init
git add nginx.conf conf.d/ sites-available/
git commit -m "Initial Nginx config"
本章小结
✔ 掌握了 Nginx 的 核心配置块(main, events, http, server, location)。
✔ 学会了 变量、正则表达式 和 include 指令的使用。
✔ 了解了 最佳实践(目录结构、注释、版本控制)。
下一步:第 3 章将讲解 静态资源服务,学习如何优化文件传输性能! 🚀
问题 & 练习
- 修改你的
nginx.conf,使用include加载外部配置。 - 创建一个虚拟主机配置,匹配所有
.jpg请求并设置缓存。 - 使用
nginx -t测试配置,并reload生效。
遇到问题?欢迎在评论区交流! 😊
1757

被折叠的 条评论
为什么被折叠?



