Nginx 是一个高性能的 Web 服务器、反向代理服务器和负载均衡器。其优化核心在于合理利用系统资源,高效处理并发连接。
1、核心配置调优
- worker进程与连接数
worker_processes auto;:设置为 auto 可自动匹配 CPU 核心数,充分利用多核。
worker_connections 4096;:提高每个 worker 进程能处理的并发连接数(需结合系统限制调整)。你需要检查并调整 Linux 系统的文件描述符限制(nofile)以支持该值。
- 高效网络传输
sendfile on;:启用 sendfile 系统调用,减少文件传输中的上下文切换和数据拷贝,提升静态资源传输效率。
tcp_nopush on;:与 sendfile 配合,确保数据包满载后再发送,提升网络效率。
- 连接复用
keepalive_timeout 30s; 与 keepalive_requests 100;:保持客户端连接一定时间,允许在该连接上发送多个请求,减少 TCP 连接建立和断开的开销。
- 缓冲与限制
- 设置
client_max_body_size 10m; 限制客户端请求体大小,防止超大请求耗尽资源。
- 使用
limit_conn_zone 和 limit_conn 限制单一 IP 的并发连接数,防止滥用。
2、缓存与压缩
启用压缩
启用 Gzip 压缩可以减少传输数据量。
gzip on;
gzip_comp_level 6; # 压缩级别,1-9,通常6是性能与压缩比的良好平衡[citation:1]
gzip_types text/plain text/css application/json; # 指定需要压缩的文件类型
代理缓存
缓存后端响应可以显著减轻上游服务器压力。
proxy_cache_path /data/cache levels=1:2 keys_zone=my_cache:10m max_size=10g;
proxy_cache_key "$scheme$request_method$host$request_uri"; # 定义缓存键
然后在 location 块中使用 proxy_cache my_cache; 启用缓存。
维护与监控
- 日志分析:定期分析
/var/log/nginx/access.log 和 error.log,排查异常请求和错误。
- 配置管理:每次修改配置后,使用
nginx -t 测试语法正确性,然后通过 systemctl reload nginx 平滑重载配置。
- 状态监控:编译时启用
ngx_http_stub_status_module 模块,通过内置页面实时监控连接数、请求数等关键指标。
- 定期更新:通过包管理工具(如
apt)定期更新 Nginx,以获取性能改进和安全补丁。