Nginx性能调优完全指南:Worker进程、Gzip压缩、静态资源缓存配置实录

Nginx默认配置适合快速启动,但对于生产环境来说,默认值往往远未达到服务器硬件的最优性能。本文系统梳理Nginx核心调优参数,帮你把同等硬件的性能发挥到极致。

一、Worker进程配置

worker_processes — 工作进程数

# 自动设置为CPU核心数(推荐)
worker_processes auto;

# 或手动指定(等于CPU核心数)
worker_processes 4;  # 4核服务器

worker_connections — 每进程最大连接数

events {
    worker_connections 4096;   # 默认1024,生产环境建议2048~8192
    use epoll;                 # Linux下使用epoll高效I/O模型
    multi_accept on;           # 允许一次接受多个连接
}

服务器理论最大并发连接数 = worker_processes × worker_connections。4核服务器设置worker_connections 4096,最大并发约16384个连接。

worker_rlimit_nofile — 文件描述符限制

# nginx.conf顶层(与worker_processes同级)
worker_rlimit_nofile 65535;

# 同时修改系统限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf

二、HTTP核心参数调优

http {
    # 开启高效文件传输
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    # 保持连接(减少TCP握手开销)
    keepalive_timeout  65;
    keepalive_requests 1000;

    # 隐藏版本号(安全)
    server_tokens off;

    # 客户端请求限制
    client_max_body_size    64m;
    client_body_timeout     30s;
    client_header_timeout   30s;

    # 响应超时
    send_timeout 30s;

    # 打开文件缓存(减少磁盘I/O)
    open_file_cache max=10000 inactive=30s;
    open_file_cache_valid 60s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
}

三、Gzip压缩配置

Gzip压缩可将HTML/CSS/JS等文本内容体积减少50%~80%,显著降低带宽消耗和页面加载时间。

http {
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;          # 压缩级别1~9,6是速度与压缩率的最佳平衡
    gzip_min_length 1024;       # 小于1KB的文件不压缩(压缩开销大于收益)
    gzip_buffers 16 8k;
    gzip_http_version 1.1;

    # 需要压缩的MIME类型
    gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/json
        application/javascript
        application/xml
        application/xml+rss
        application/atom+xml
        image/svg+xml
        font/ttf
        font/otf;
}

四、静态资源缓存配置

为静态资源设置长期缓存头,让浏览器本地缓存文件,减少重复请求:

server {
    # 图片、字体 — 缓存1年
    location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        access_log off;  # 静态资源不记录访问日志,减少I/O
    }

    # CSS、JS — 缓存30天(前端构建时通过文件名hash控制版本)
    location ~* \.(css|js)$ {
        expires 30d;
        add_header Cache-Control "public";
        access_log off;
    }

    # HTML — 不缓存(保证内容实时更新)
    location ~* \.html$ {
        expires -1;
        add_header Cache-Control "no-cache, no-store, must-revalidate";
    }
}

五、开启HTTP/2

HTTP/2支持多路复用,单个TCP连接可并发传输多个资源,页面加载速度可提升20%~50%。

server {
    listen 443 ssl http2;  # 添加http2关键字即可开启
    server_name 你的域名;

    ssl_certificate     /etc/letsencrypt/live/你的域名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;

    # TLS优化
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # OCSP Stapling(减少SSL握手时间)
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 valid=300s;
}

六、FastCGI缓存(PHP/WordPress加速)

对于WordPress等PHP站点,FastCGI缓存可将动态页面响应速度提升10~100倍:

http {
    # 定义缓存区域(在http块中)
    fastcgi_cache_path /var/cache/nginx levels=1:2
                       keys_zone=wordpress:100m
                       inactive=60m
                       max_size=1g;
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
}

server {
    set $skip_cache 0;

    # POST请求不缓存
    if ($request_method = POST) { set $skip_cache 1; }

    # 已登录用户不缓存
    if ($http_cookie ~* "wordpress_logged_in") { set $skip_cache 1; }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_cache wordpress;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        add_header X-FastCGI-Cache $upstream_cache_status;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

七、调优效果验证

# 测试配置语法
nginx -t

# 重载配置(不中断服务)
nginx -s reload

# 压测对比(安装wrk)
apt install wrk -y

# 调优前后各运行一次,对比QPS和延迟
wrk -t4 -c100 -d30s https://你的域名/

八、完整优化配置总结

按照本文配置完成后,常见的性能提升幅度:

  • 静态资源请求减少:40%~60%(浏览器缓存命中)
  • 传输体积减少:50%~70%(Gzip压缩)
  • 并发处理能力提升:3~5倍(worker参数优化)
  • PHP页面响应速度:10~50倍(FastCGI缓存)

IDC.Net的香港VPS默认提供高性能NVMe SSD和充足带宽,配合以上Nginx调优配置,可以将服务器性能发挥到最大值。

THE END