linux

LNMP下Nginx如何调优

小樊
41
2025-09-06 07:31:19
栏目: 编程语言

以下是LNMP环境下Nginx的调优要点,涵盖配置、系统及性能优化:

一、核心配置优化

  1. 工作进程与连接数

    • worker_processes auto; // 自动匹配CPU核心数。
    • worker_connections 65535; // 单个worker最大连接数,需结合系统文件描述符限制。
    • 事件模型:use epoll;(Linux下高效模型)。
  2. 静态资源优化

    • 启用缓存:expires 365d; + add_header Cache-Control "public";
    • Gzip压缩:gzip on; gzip_types text/css application/javascript;
  3. 动态请求优化(PHP场景)

    • 调整PHP-FPM参数:pm.max_children(建议CPU核心数×2)、pm.start_servers
    • 代理缓存:proxy_cache_path + proxy_cache_valid减少后端压力。
  4. 连接与超时设置

    • keepalive_timeout 65s; // 保持长连接,减少握手开销。
    • client_max_body_size 20M; // 限制上传文件大小。

二、系统级优化

  1. 文件描述符限制

    • 临时生效:ulimit -n 65535
    • 永久生效:修改/etc/security/limits.conf,设置* soft nofile 65535
  2. 内核参数调优

    • 编辑/etc/sysctl.conf
      net.core.somaxconn = 65535  
      net.ipv4.tcp_max_syn_backlog = 65535  
      net.ipv4.tcp_tw_reuse = 1  
      
    • 执行sysctl -p生效。

三、高并发场景扩展

  1. 负载均衡

    • 配置上游服务器组:upstream backend { server 10.0.0.1:80; server 10.0.0.2:80; }
    • 使用least_conn算法分配请求。
  2. 流量控制

    • 限速:limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
    • 防止DDoS:limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

四、安全与监控

  1. 安全加固

    • 隐藏Nginx版本:server_tokens off;
    • 禁止访问敏感文件:location ~ /\.(ht|git) { deny all; }
  2. 日志与监控

    • 日志缓冲:access_log /var/log/nginx/access.log buffer=64k flush=5m;
    • 使用工具(如Prometheus+Grafana)监控QPS、连接数等指标。

五、验证与调优建议

参考来源

0
看了该问题的人还看了