nginx的优化策略
Nginx优化策略的结构化总结,涵盖配置调整、系统优化及安全加固等方面:
1. 工作进程与连接优化
- 多进程模型:设置
worker_processes auto;自动匹配CPU核心数。 - 连接数限制:
worker_connections 1024;,总连接数 =worker_processes × worker_connections。 - 长连接优化:
keepalive_timeout 65;(减少空闲连接占用)。keepalive_requests 100;(限制单个连接请求数)。
2. 静态资源传输优化
- 高效传输:
sendfile on;启用零拷贝传输。tcp_nopush on;(与sendfile配合,合并数据包)。tcp_nodelay on;(禁用Nagle算法,提升实时性)。
- 压缩:
gzip on;开启Gzip压缩。gzip_comp_level 6;(平衡压缩率与CPU消耗)。gzip_types text/css application/json;指定压缩类型。
3. 反向代理与负载均衡
- 策略选择:
- 轮询(默认)、权重(
weight)、IP哈希(ip_hash)、最少连接(least_conn)。
- 轮询(默认)、权重(
- 健康检查:
max_fails 3;+fail_timeout 30s;标记故障节点。
- 缓冲区优化:
proxy_buffers 8 16k;调整响应缓冲区大小。proxy_buffer_size 4k;初始响应头缓冲区。
4. SSL/TLS加速
- 协议与加密套件:
ssl_protocols TLSv1.2 TLSv1.3;禁用旧协议。- 优先ECDHE密钥交换,如
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256;。
- 性能优化:
ssl_session_cache shared:SSL:10m;会话复用。ssl_session_timeout 10m;会话有效期。ssl_stapling on;启用OCSP装订减少验证延迟。
5. 缓存配置
- 反向代理缓存:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m; proxy_cache_key "$scheme$request_method$host$request_uri"; - 浏览器缓存:
expires 30d;静态资源长期缓存。add_header Cache-Control "public";明确缓存策略。
6. 日志优化
- 减少磁盘IO:
access_log off;或access_log /var/log/nginx/access.log buffer=64k flush=1m;。- 定期切割日志(使用logrotate或脚本)。
- 日志级别:
error_log warn;避免冗余调试信息。
7. 操作系统调优
- 文件描述符:
worker_rlimit_nofile 65535;提升Nginx限制。- 修改系统限制:
ulimit -n 65535(写入/etc/security/limits.conf)。
- 网络参数:
# 调整内核参数(/etc/sysctl.conf) net.core.somaxconn = 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30
8. 安全加固
- 隐藏版本:
server_tokens off;。 - 请求限制:
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;限制并发连接。limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;请求速率限制。
- 超时控制:
client_body_timeout 10s;防止慢客户端攻击。
9. 高级优化
- 启用HTTP/2:
listen 443 ssl http2;提升多路复用效率。 - 动态模块:
- Brotli压缩(替代Gzip,更高压缩率)。
- Lua脚本(ngx_lua模块实现复杂逻辑)。
- 禁用非必要模块:编译时移除未用模块(如
--without-http_ssi_module)。
10. 性能监控与测试
- 监控工具:
stub_status模块实时查看连接状态。 - 压测工具:使用
wrk或ab模拟高并发场景。 - 持续调优:根据监控数据调整配置(如缓存策略、连接数)。
通过上述策略,可显著提升Nginx的吞吐量、降低延迟,并增强服务稳定性。建议结合具体场景逐步调整,并通过压测验证效果。
浙公网安备 33010602011771号