LNMP环境下Nginx配置优化
小樊
38
2025-11-16 10:02:00
LNMP环境下 Nginx 配置优化要点
一 基础进程与连接优化
- 设置工作进程数与文件描述符
- 将 worker_processes 设为 auto 或匹配 CPU 物理核心数;提升 worker_rlimit_nofile(如 100000)以支撑高并发连接。
- 示例:worker_processes auto; worker_rlimit_nofile 100000;
- 事件模型与连接复用
- Linux 使用 epoll;结合 worker_connections(如 4096–65535)与 multi_accept on 提升连接接受效率。
- 开启 keepalive 复用连接:keepalive_timeout(如 30s)、keepalive_requests(如 1000),降低握手与 TIME_WAIT 开销。
二 传输压缩与静态资源加速
- 启用压缩
- 开启 gzip(建议 gzip_comp_level 6),压缩常见文本与脚本资源;若模块可用,叠加 Brotli(如 brotli_comp_level 6)进一步降低体积(注意 CPU 开销)。
- 缓存控制与文件元数据缓存
- 对图片、CSS、JS 等设置长期缓存并结合版本化文件名;可使用 open_file_cache 缓存文件元数据,减少系统调用。
- 示例:
- location ~* .(jpg|png|css|js)$ { expires 365d; add_header Cache-Control “public, no-transform”; }
- open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s;
三 反向代理与上游优化
- 缓存与负载均衡
- 配置 proxy_cache_path 做反向代理缓存;结合 least_conn 或 round_robin 分发请求,提升后端均衡度与稳定性。
- 示例:
- proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
- upstream backend { least_conn; server 10.0.0.1:8000; server 10.0.0.2:8000; }
- 上游长连接与健康检查
- 开启 proxy_http_version 1.1 与连接复用;为上游设置 max_fails/fail_timeout 做健康检查与故障隔离。
四 安全与限流
- 速率与并发限制
- 使用 limit_req_zone/limit_req 限制单 IP 请求速率,使用 limit_conn_zone/limit_conn 限制并发连接数,抵御突发与滥用流量。
- 示例:limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s; location /api/ { limit_req zone=api_limit burst=200; }
- TLS 安全与性能
- 仅启用 TLSv1.3/TLSv1.2,开启 ssl_session_cache 与 OCSP Stapling 降低握手开销并提升兼容性与安全性。
五 变更流程与验证
- 配置与系统调优
- 变更前备份:cp /etc/nginx/nginx.conf{,.bak};修改后执行 nginx -t 校验语法,再平滑重启:systemctl reload nginx。
- 系统层面提升文件描述符与内核网络参数(如 net.core.somaxconn、net.ipv4.tcp_tw_reuse),为 Nginx 高并发提供基础能力。
- 监控与压测
- 通过 ngx_http_stub_status 暴露连接与请求指标;使用 wrk/ab/vegeta 进行压测,观察 RPS、P95/P99 延迟、Active/Waiting 状态,持续迭代参数。