知识库
Nginx 综合指南
Nginx 的配置看起来只是几段 server,但请求到底走正向代理、反向代理还是静态文件,取决于指令所在的层级。下面按请求路径、进程模型和常用配置逐段拆解。
原文链接:https://zhuanlan.zhihu.com/p/34943332
作者:张丰哲 - 简书
引言

Nginx 是一款轻量级的 Web 服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,被广泛应用于各大互联网公司。
一、反向代理服务器?

1.1 正向代理
定义:代理客户端
特点:
- 客户端知道目标
- 目标不知道客户端通过 VPN 访问
示例:VPN 访问谷歌
1.2 反向代理
定义:代理服务器端
特点:
- 对客户端透明
- 客户端不知道实际服务器的存在
示例:外网访问百度时,Nginx 转发到内网服务器
二、Nginx 的 Master-Worker 模式

2.1 Master 进程作用
- 读取并验证配置文件 nginx.conf
- 管理 worker 进程
2.2 Worker 进程作用
- 每一个 Worker 进程都维护一个线程(避免线程切换)
- 处理连接和请求
- Worker 进程个数由配置文件决定,一般和 CPU 个数相关
三、Nginx 如何做到热部署?
3.1 方案一
- 修改配置文件后,主进程推送给 worker 进程更新配置信息
3.2 方案二(Nginx 采用的方式)
- 重新生成新的 worker 进程处理新请求
- 老的 worker 进程处理完旧请求后 kill 掉
优势:保证服务不中断,平滑升级
四、Nginx 如何做到高并发下的高效处理?
4.1 关键技术
- Worker 进程个数与 CPU 绑定
- Worker 进程内部包含一个线程高效回环处理请求
- 采用 Linux 的 epoll 模型
4.2 epoll 模型特点
- 基于事件驱动机制
- 监控多个事件是否准备完毕
- 异步处理
- Worker 只需要从 epoll 队列循环处理
优势:相比传统的 select/poll 模型,性能大幅提升
五、Nginx 挂了怎么办?

5.1 解决方案
Keepalived + Nginx 实现高可用
5.2 实现思路
- 请求通过 Keepalived(虚拟 IP,VIP)
- Keepalived 监控 Nginx 的生命状态
- 提供脚本定期检查 Nginx 进程状态
- 实现 Nginx 故障切换
优势:当主 Nginx 故障时,备份 Nginx 立即接管服务
六、主战场:nginx.conf
6.1 虚拟主机配置
作为 web server 处理静态资源:
- location 正则匹配
- 动静分离
- 不同域名管理静态资源和日志文件
- IP 访问控制(黑名单模块)
配置示例:
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
# 静态资源
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
root /var/www/static;
}
}
6.2 反向代理【proxy_pass】
特点:
root替换成proxy_passroot说明是静态资源proxy_pass说明是动态请求,需要转发- 可以自定义设置 HTTP HEADER
配置示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
6.3 负载均衡【upstream】
功能:
- 通过 upstream 定义一组服务器
- 指定负载策略:IPHASH、加权轮调、最少连接
- 健康检查策略
配置示例:
upstream backend {
server 192.168.1.1:8080 weight=2;
server 192.168.1.2:8080;
server 192.168.1.3:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
负载策略说明:
- IPHASH:根据 IP 分配,保证同一用户访问同一服务器
- 加权轮调:根据权重分配请求
- 最少连接:分配给连接数最少的服务器
注意事项:
- 用户状态保存(Session 会话信息)不能保存在服务器上
- 建议使用 Redis 等外部存储共享 Session
6.4 缓存
功能:
- Nginx 提供的加速访问机制
- 指定目录存储到磁盘上
配置示例:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g;
server {
location / {
proxy_cache my_cache;
proxy_cache_valid 200 60m;
proxy_pass http://backend;
}
}
七、总结
Nginx 的核心优势:
- 轻量级:内存占用少,启动极快
- 高并发:采用 epoll 模型,性能出色
- 热部署:不中断服务的情况下更新配置
- 高可用:配合 Keepalived 实现故障切换
- 功能丰富:虚拟主机、反向代理、负载均衡、缓存等
参考文章
- Nginx 详解
- 一文详解负载均衡和反向代理的真实区别
文档生成时间:2026-02-27