Nginx 配置最佳实践:从入门到精通
本文全面讲解 Nginx 的配置语法、常用场景、性能优化和安全加固,帮助运维和开发人员构建高性能、高可用的 Web 服务。
一、Nginx 基础架构
1.1 Nginx 工作原理
1 | graph TB |
核心概念:
- Master 进程:管理 Worker 进程,处理配置加载、日志打开等
- Worker 进程:处理实际请求,多进程模型
- 事件驱动:非阻塞 I/O,高并发性能
- 连接复用:Keepalive 减少连接开销
1.2 安装 Nginx
1 | # Ubuntu/Debian |
1.3 目录结构
1 | # Nginx 目录结构 |
二、配置文件详解
2.1 nginx.conf 结构
1 | # 主配置文件结构 |
2.2 核心指令详解
worker_processes
1 | # 设置 Worker 进程数 |
worker_connections
1 | events { |
keepalive_timeout
1 | http { |
三、常用场景配置
3.1 静态文件服务器
1 | server { |
3.2 反向代理
1 | server { |
3.3 负载均衡
1 | # 上游服务器组 |
3.4 HTTPS 配置
1 | server { |
3.5 动静分离
1 | upstream backend { |
四、性能优化
4.1 基础优化
1 | # nginx.conf |
4.2 缓存优化
1 | # 代理缓存配置 |
4.3 连接优化
1 | http { |
4.4 FastCGI 优化(PHP)
1 | server { |
五、安全加固
5.1 基础安全配置
1 | server { |
5.2 DDoS 防护
1 | http { |
5.3 SSL/TLS 安全
1 | server { |
5.4 访问控制
1 | server { |
六、监控与日志
6.1 日志配置
1 | http { |
6.2 日志分析
1 | # 查看访问日志 |
6.3 状态监控
1 | # 启用状态模块 |
6.4 Prometheus 监控
1 | # 使用 nginx-prometheus-exporter |
七、故障排查
7.1 常见问题
1 | # 测试配置 |
7.2 错误码排查
| 错误码 | 含义 | 常见原因 | 解决方案 |
|---|---|---|---|
| 400 | 错误请求 | 请求格式错误 | 检查客户端请求 |
| 403 | 禁止访问 | 权限不足 | 检查文件权限、IP 限制 |
| 404 | 未找到 | 文件不存在 | 检查路径、root 配置 |
| 405 | 方法不允许 | HTTP 方法错误 | 检查允许的请求方法 |
| 413 | 请求体过大 | 超过限制 | 调整 client_max_body_size |
| 414 | URI 过长 | URL 太长 | 调整 large_client_header_buffers |
| 499 | 客户端关闭 | 客户端超时 | 优化后端响应时间 |
| 500 | 服务器错误 | 配置错误 | 检查 error.log |
| 502 | 错误网关 | 后端服务异常 | 检查后端服务状态 |
| 503 | 服务不可用 | 后端过载 | 检查后端负载 |
| 504 | 网关超时 | 后端响应超时 | 增加 proxy_read_timeout |
7.3 调试技巧
1 | # 增加日志详细程度 |
八、总结
Nginx 配置的关键要点:
- 基础配置:worker_processes、worker_connections、keepalive
- 常用场景:静态文件、反向代理、负载均衡、HTTPS
- 性能优化:缓存、压缩、连接优化
- 安全加固:隐藏版本、安全头、访问控制、DDoS 防护
- 监控日志:日志格式、状态监控、故障排查
记住:配置要简洁,优化要适度,安全要优先。
参考资料:
- Nginx 官方文档
- Nginx 配置最佳实践
- Mozilla SSL 配置生成器
- 《Nginx 权威指南》