温馨提示×

nginxssl在debian如何优化

小樊
48
2026-09-17 20:56:14
栏目: 云计算

在 Debian 上优化 Nginx + SSL(HTTPS),可以从协议与加密套件、证书、会话复用、性能参数、系统层面几个方面入手。下面按“实用可落地的优化清单”给你说明。


一、SSL 协议与加密套件优化

1. 禁用不安全的协议

编辑 Nginx 配置(如 /etc/nginx/conf.d/ssl.confnginx.conf):

ssl_protocols TLSv1.2 TLSv1.3;

✅ 推荐:

  • TLS 1.2 + TLS 1.3
  • 禁用 SSLv3、TLS 1.0、TLS 1.1

2. 优化加密套件(Cipher Suites)

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 off;

✅ TLS 1.3 会自动使用现代套件,不用手动列太多。


二、启用 SSL 会话复用(非常重要)

1. SSL Session Cache

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;

2. SSL Session Tickets(可选)

ssl_session_tickets on;
ssl_session_ticket_key /etc/nginx/ssl/ticket.key;

⚠️ 注意:

  • 多台服务器时要共享 ticket key
  • 否则会导致会话无法复用

三、启用 OCSP Stapling(提升握手速度)

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;

证书中需包含中间证书(fullchain)。


四、HTTP/2 或 HTTP/3(强烈推荐)

HTTP/2

listen 443 ssl http2;

HTTP/3(可选,Debian + Nginx 1.25+)

listen 443 quic reuseport;

五、证书优化

1. 使用 ECDSA 证书(比 RSA 更快)

openssl ecparam -genkey -name prime256v1 -out ec.key

2. 启用证书缓存

ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;

六、Nginx 性能参数优化

worker_processes auto;
worker_connections 10240;
keepalive_timeout 65;

七、Debian 系统层面优化

1. 调整文件描述符

ulimit -n 65535

/etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

2. 开启 TCP 优化

/etc/sysctl.conf

net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
sysctl -p

八、使用 Let’s Encrypt + Certbot(推荐)

apt install certbot python3-certbot-nginx
certbot --nginx -d example.com

自动配置:

  • TLS 1.2/1.3
  • 强加密套件
  • OCSP Stapling

九、验证优化效果

openssl s_client -connect example.com:443

或在线工具:

  • https://www.ssllabs.com/ssltest/
  • https://http3check.net/

十、推荐最小可用 SSL 配置示例

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;

    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;
}

如果你愿意,可以告诉我:

  • Debian 版本
  • Nginx 版本
  • 是否集群 / 单台
  • 是否用 Let’s Encrypt

我可以帮你直接给出一套完整可用的配置

0