在 Debian 上运行 Nginx 并启用 SSL(通常是 TLS)时,性能优化主要集中在 TLS 握手开销、CPU 加解密、连接复用、缓存和系统参数 几个方面。下面给出一套实用且可落地的优化方案。
nginx -V
openssl version
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
TLS 1.3 默认使用高效算法,无需手动指定。
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets on;
⚠️ 若对“前向安全性”要求极高,可关闭 tickets。
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;
listen 443 ssl http2;
✅ HTTP/2 可显著减少连接数、提升并发。
ssl_certificate /etc/nginx/ssl/example.com.ecdsa.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.ecdsa.key;
ssl_certificate /path/rsa.crt;
ssl_certificate_key /path/rsa.key;
ssl_certificate /path/ecdsa.crt;
ssl_certificate_key /path/ecdsa.key;
worker_processes auto;
events {
worker_connections 10240;
multi_accept on;
use epoll;
}
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
brotli on;
brotli_comp_level 5;
ulimit -n 65535
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
/etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 8192
sysctl -p
location ~* \.(js|css|png|jpg|svg)$ {
expires 30d;
add_header Cache-Control "public";
}
openssl s_time -connect example.com:443
ab / wrk / heyserver {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
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 1d;
ssl_session_tickets on;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 valid=300s;
keepalive_timeout 65;
sendfile on;
}
如果你愿意,我可以:
nginx.conf直接贴配置即可。