在 Debian 上 Nginx + SSL 变慢,通常不是 Nginx 本身的问题,而是环境或配置导致的。下面按常见原因 → 排查方法 → 解决建议来说明。
SSL 握手非常耗时,如果每次请求都重新握手,会明显变慢。
表现
检查
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
建议配置
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
Debian 默认 OpenSSL 较新,但配置不当会回退到慢算法。
慢的配置示例
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL;
推荐
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
客户端验证证书时会去 CA 查询,导致延迟。
开启
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
Debian 某些云服务器熵池小,SSL 随机数生成会卡。
检查
cat /proc/sys/kernel/random/entropy_avail
如果长期 < 100,就可能是问题。
解决
apt install haveged
systemctl enable haveged
或使用 rng-tools
SSL 计算吃 CPU。
检查
nproc
Nginx 配置
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 4096;
use epoll;
}
检查
openssl s_client -connect domain:443
解决
TLS 1.3 握手快一倍。
ssl_protocols TLSv1.2 TLSv1.3;
建议
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
我可以更精准判断:
我可以给你一套针对你机器的配置。