插件窝 干货文章 nginx中小vps怎么优化

nginx中小vps怎么优化

Nginx 优化 client timeout 803    来源:    2025-04-22

针对小VPS(如1核CPU/1GB内存)的Nginx优化,以下是一套系统化的解决方案,兼顾性能与资源节省:


一、基础配置优化

  1. 工作进程调优

    worker_processes auto;  # 自动匹配CPU核心数(小VPS通常设为1)
    worker_rlimit_nofile 2048; # 每个worker能打开的最大文件描述符数
    
  2. 事件模型优化

    events {
       worker_connections 1024; # 根据内存调整(1GB建议1024)
       use epoll; # Linux系统启用高效epoll模型
       multi_accept on; # 一次接受所有新连接
    }
    
  3. 关闭非必要日志

    access_log off; # 或仅记录关键请求
    error_log /var/log/nginx/error.log warn; # 只记录警告及以上级别
    

二、性能关键参数

  1. 连接优化

    keepalive_timeout 15; # 保持连接时间(秒)
    keepalive_requests 100; # 单个连接最大请求数
    sendfile on; # 启用零拷贝传输
    tcp_nopush on; # 数据包累积后发送
    tcp_nodelay on; # 禁用Nagle算法
    
  2. 缓冲与超时

    client_body_buffer_size 16K;
    client_header_buffer_size 1k;
    client_max_body_size 8m; # 根据需求调整上传限制
    client_body_timeout 12;
    client_header_timeout 12;
    

三、静态资源优化

  1. 启用Gzip压缩

    gzip on;
    gzip_types text/plain text/css application/json application/javascript;
    gzip_min_length 1024;
    gzip_comp_level 3; # 压缩级别1-9,小VPS建议3-5
    
  2. 缓存控制

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
       expires 30d;
       add_header Cache-Control "public, no-transform";
    }
    

四、安全与资源限制

  1. 基础防护

    server_tokens off; # 隐藏Nginx版本号
    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
    limit_conn conn_limit 50; # 单IP最大并发连接数
    
  2. 防慢速攻击

    client_body_timeout 5s;
    client_header_timeout 5s;
    reset_timedout_connection on;
    

五、高级优化(可选)

  1. 启用HTTP/2

    listen 443 ssl http2; # 需先配置SSL证书
    
  2. 反向代理优化

    proxy_buffer_size 4k;
    proxy_buffers 8 16k;
    proxy_busy_buffers_size 32k;
    
  3. 系统级配合

    # 调整内核参数(/etc/sysctl.conf)
    net.ipv4.tcp_fin_timeout = 30
    net.core.somaxconn = 1024
    

六、监控与调优验证

  1. 实时状态检查

    nginx -t # 测试配置
    top -p $(pgrep -d ',' nginx) # 监控进程资源占用
    
  2. 压测工具验证

    ab -n 1000 -c 50 http://yourdomain.com/
    

注意事项

  • 每次修改后执行 nginx -s reload
  • 内存不足时可启用 swap 分区(临时方案)
  • 静态资源建议通过CDN分流

通过以上配置,1GB内存VPS可轻松应对日均5000~10000次请求(静态页面)。动态内容需结合PHP/数据库优化(如OPcache、MySQL调优)。