如何优化Nginx性能?
2025-04-14
4
参考资料
Nginx 性能优化配置示例
1. 调整 Worker 进程和连接数
worker_processes auto; # 自动匹配 CPU 核心数 worker_rlimit_nofile 100000; # 提高文件描述符限制 events { worker_connections 4096; # 每个 worker 的最大连接数 use epoll; # Linux 高性能事件模型 multi_accept on; # 允许 worker 同时接受多个连接 }
2. 启用 Gzip 压缩
gzip on; gzip_min_length 1k; # 最小压缩文件大小 gzip_comp_level 6; # 压缩级别(1-9) gzip_types text/plain text/css application/json application/javascript text/xml; gzip_vary on; # 根据客户端支持情况启用压缩 gzip_disable "MSIE [1-6]\."; # 禁用旧版 IE 的压缩
3. 静态文件缓存优化
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf|svg)$ { expires 365d; # 缓存 1 年 access_log off; # 关闭访问日志 add_header Cache-Control "public, immutable"; # 强制缓存 }
4. 启用 Keep-Alive
keepalive_timeout 65; # 保持连接 65 秒 keepalive_requests 1000; # 单个连接最大请求数
5. 调整缓冲区大小
client_body_buffer_size 16k; client_header_buffer_size 4k; client_max_body_size 8m; # 限制上传文件大小 large_client_header_buffers 4 16k; # 大请求头缓冲区
6. 优化 FastCGI(PHP-FPM)
location ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_read_timeout 60s; }
7. 限制请求速率(防 DDoS)
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s; limit_conn_zone $binary_remote_addr zone=conn_limit:10m; server { limit_req zone=req_limit burst=20 nodelay; limit_conn conn_limit 100; }
8. 关闭访问日志(可选)
access_log off; # 生产环境可关闭日志 error_log /var/log/nginx/error.log warn; # 仅记录警告及以上错误
9. 启用 TCP 优化(适用于高并发)
http { sendfile on; # 零拷贝传输文件 tcp_nopush on; # 减少数据包数量 tcp_nodelay on; # 禁用 Nagle 算法 }
10. 使用 HTTP/2(提升 HTTPS 性能)
server { listen 443 ssl http2; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; }
优化后检查
nginx -t # 测试配置是否正确 systemctl restart nginx # 重启生效
这些配置可根据实际服务器负载进一步调整。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。