Debian 上降低 Nginx SSL 延迟的实用做法
一 核心优化项
二 关键 Nginx 配置示例
# /etc/nginx/sites-available/example.com
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; # OCSP 用
include /etc/letsencrypt/options-ssl-nginx.conf; # 官方推荐基线
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # 2048-bit DH
# 协议与套件:优先 TLS1.3,保留 TLS1.2;仅启用高效 AEAD 套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# 会话复用:减少完整握手
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets on;
# OCSP Stapling:服务器代答证书状态,减少客户端等待
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
# 传输层优化:小响应体降低 TTFB;启用压缩
ssl_buffer_size 4k;
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 256;
# 安全与合规
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
server_tokens off;
location / {
root /var/www/html;
index index.html;
}
}
# 将 HTTP 强制跳转至 HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
说明:证书路径以 Let’s Encrypt 为例;若使用其它 CA,请确保链文件与域名匹配。DH 参数建议 2048-bit;若性能敏感可测试 4096-bit 的 CPU 影响后再定。
三 证书与链的正确准备
四 验证与排障
五 进阶与架构优化