插件窝 干货文章 怎么加速nginx性能

怎么加速nginx性能

优化 Nginx application 缓存 979    来源:    2025-04-23

Nginx性能优化指南

Nginx作为高性能的Web服务器和反向代理,可以通过多种方式进行优化以提高性能。以下是一些关键的优化策略:

1. 基础配置优化

工作进程配置

worker_processes auto; # 自动设置为CPU核心数
worker_cpu_affinity auto; # CPU亲和性绑定(仅Linux)
worker_rlimit_nofile 65535; # 每个worker能打开的文件描述符数量

事件模块优化

events {
    worker_connections 10240; # 每个worker的最大连接数
    use epoll; # Linux下高性能事件模型
    multi_accept on; # 一次接受多个连接
}

2. HTTP模块优化

http {
    sendfile on; # 启用sendfile系统调用
    tcp_nopush on; # 仅在sendfile开启时有效
    tcp_nodelay on; # 禁用Nagle算法

    keepalive_timeout 65; # 保持连接超时时间
    keepalive_requests 1000; # 单个连接最大请求数

    client_max_body_size 10m; # 最大上传文件大小
    client_body_buffer_size 128k; # 客户端请求体缓冲区大小

    open_file_cache max=10000 inactive=20s; # 文件描述符缓存
    open_file_cache_valid 30s; # 缓存检查时间
    open_file_cache_min_uses 2; # 最少使用次数才缓存
    open_file_cache_errors on; # 缓存错误信息
}

3. 静态内容优化

server {
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 365d; # 长期缓存静态资源
        access_log off; # 关闭日志记录
        add_header Cache-Control "public, immutable";
    }
}

4. Gzip压缩

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1024; # 小于1KB不压缩

5. SSL/TLS优化

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
ssl_stapling on;
ssl_stapling_verify on;

6. 反向代理优化

upstream backend {
    server 127.0.0.1:8080;
    keepalive 32; # 保持连接池大小
}

server {
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffering on;
        proxy_buffer_size 4k;
        proxy_buffers 8 16k;
    }
}

7. 高级优化技巧

  1. 启用HTTP/2:

    listen 443 ssl http2;
    
  2. 启用Brotli压缩(需要额外模块):

    brotli on;
    brotli_comp_level 6;
    brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
  3. 调整内核参数(Linux):

    # 增加本地端口范围
    echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
    # 增加TCP最大半连接队列
    echo "net.ipv4.tcp_max_syn_backlog = 65536" >> /etc/sysctl.conf
    # 启用TCP快速打开
    echo "net.ipv4.tcp_fastopen = 3" >> /etc/sysctl.conf
    sysctl -p
    
  4. 使用最新版本:始终使用最新的稳定版Nginx以获得最佳性能和新特性。

监控与调优

  1. 使用nginx -t测试配置更改
  2. 监控性能指标:
    • stub_status模块提供基本状态信息
    • 使用ngx_http_status_module或第三方工具如Prometheus+Grafana
  3. 根据实际负载调整参数

这些优化策略应根据您的具体应用场景和服务器环境进行调整,建议每次只修改一个参数并测试效果。