温馨提示×

debian nginxssl如何性能优化

小樊
41
2026-10-11 13:46:08
栏目: 云计算

在 Debian 上运行 Nginx 并启用 SSL(通常是 TLS)时,性能优化主要集中在 TLS 握手开销、CPU 加解密、连接复用、缓存和系统参数 几个方面。下面给出一套实用且可落地的优化方案。


一、基础系统与软件建议

1. 使用较新版本

  • Debian 11/12
  • Nginx ≥ 1.18(推荐 1.22+)
  • OpenSSL ≥ 1.1.1(支持 TLS 1.3)
nginx -V
openssl version

二、SSL/TLS 协议与加密套件优化

1. 禁用老旧协议

ssl_protocols TLSv1.2 TLSv1.3;

2. 使用现代加密套件

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

TLS 1.3 默认使用高效算法,无需手动指定。


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

1. Session Cache(减少握手)

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

2. Session Tickets(可选)

ssl_session_tickets on;

⚠️ 若对“前向安全性”要求极高,可关闭 tickets。


四、启用 OCSP Stapling(减少客户端验证延迟)

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

五、HTTP/2(大幅提升性能)

listen 443 ssl http2;

✅ HTTP/2 可显著减少连接数、提升并发。


六、SSL 证书与密钥优化

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

ssl_certificate     /etc/nginx/ssl/example.com.ecdsa.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.ecdsa.key;

2. 可选:RSA + ECDSA 双证书

ssl_certificate     /path/rsa.crt;
ssl_certificate_key /path/rsa.key;
ssl_certificate     /path/ecdsa.crt;
ssl_certificate_key /path/ecdsa.key;

七、Nginx worker 与连接优化

1. Worker 进程

worker_processes auto;

2. 连接数

events {
    worker_connections 10240;
    multi_accept on;
    use epoll;
}

八、开启文件与缓冲优化

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;

九、开启 Gzip / Brotli(减少传输)

Gzip

gzip on;
gzip_types text/plain text/css application/json application/javascript;

Brotli(性能更好,需模块)

brotli on;
brotli_comp_level 5;

十、系统层优化(Linux)

1. 文件描述符

ulimit -n 65535

/etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

2. 内核参数

/etc/sysctl.conf

net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 8192
sysctl -p

十一、缓存静态资源(减少 SSL 请求)

location ~* \.(js|css|png|jpg|svg)$ {
    expires 30d;
    add_header Cache-Control "public";
}

十二、性能验证方法

1. 测试 TLS 握手

openssl s_time -connect example.com:443

2. 测试网站性能

  • https://www.ssllabs.com/ssltest/
  • ab / wrk / hey

十三、推荐最小优化模板(可直接用)

server {
    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 版本 & 业务类型(API / 静态站 / 视频) 给更精准配置
  • 帮你做 SSL Labs A+ 配置
  • 或检查你当前的 nginx.conf

直接贴配置即可。

0 踩