在 Debian 上优化 Nginx + SSL(HTTPS),通常从 协议/加密套件、性能、证书、系统层面 四个方面入手。下面给你一套实用且安全的优化方案(适用于 Debian 11/12 + Nginx 1.18+)。
编辑 Nginx 配置文件(如 /etc/nginx/conf.d/ssl.conf 或站点配置):
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off; # TLS1.3 下无意义
✅ 不建议启用 TLS 1.0 / 1.1
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
如果你只支持现代浏览器:
ssl_ciphers TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off; # 更安全(可选)
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;
检查:
nginx -t
systemctl reload nginx
openssl ecparam -genkey -name prime256v1 -out key.pem
Let’s Encrypt:
certbot certonly --key-type ecdsa
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 10240;
use epoll;
}
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
ulimit -n 65535
/etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 300
sysctl -p
add_header Strict-Transport-Security "max-age=31536000" always;
server_tokens off;
https://www.ssllabs.com/ssltest/
curl -I --http2 https://yourdomain.com
如果你愿意,可以告诉我:
我可以直接给你一份 可复制的 Nginx SSL 配置模板。