温馨提示×

LNMP环境下Nginx配置优化

小樊
41
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_connround_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_cacheOCSP Stapling 降低握手开销并提升兼容性与安全性。

五 变更流程与验证

  • 配置与系统调优
    • 变更前备份:cp /etc/nginx/nginx.conf{,.bak};修改后执行 nginx -t 校验语法,再平滑重启:systemctl reload nginx。
    • 系统层面提升文件描述符与内核网络参数(如 net.core.somaxconnnet.ipv4.tcp_tw_reuse),为 Nginx 高并发提供基础能力。
  • 监控与压测
    • 通过 ngx_http_stub_status 暴露连接与请求指标;使用 wrk/ab/vegeta 进行压测,观察 RPS、P95/P99 延迟、Active/Waiting 状态,持续迭代参数。

0