如何在Ubuntu 22.04 上部署 Nginx + Let’s Encrypt 实现高性能 HTTPS 静态网站教程
·
本文面向运维工程师和高级开发者,结合实际生产环境,在香港服务器(高带宽、低延迟)上使用 Ubuntu 22.04 LTS 部署高性能的 Nginx 静态网站,并通过 Let’s Encrypt 自动化实现 HTTPS。A5数据重点聚焦技术细节、性能调优、硬件/网络配置与实测数据,为高并发业务场景提供可复制的解决方案。
一、项目背景与目标
目标是在香港节点www.a5idc.com的 Ubuntu 22.04 服务器上:
- 部署 Nginx 作为静态资源服务器;
- 使用 FastCGI/缓存、HTTP/2、TLS 1.3 提升性能;
- 自动化配置 Let’s Encrypt 免费证书;
- 实现高并发稳定 HTTPS 服务;
- 通过 benchmark 工具评估性能指标。
适用场景包括静态官网、单页应用(SPA)、图片/视频展示页。
二、硬件与网络配置建议
| 参数类别 | 建议规格 | 说明 |
|---|---|---|
| 处理器 CPU | 4 核及以上(Intel Xeon/E5 或 AMD EPYC) | 多核有助于处理 TLS 握手、静态文件 I/O |
| 内存 | 8 GB RAM 或更高 | 缓存与突发流量缓冲 |
| 存储 | NVMe SSD 200 GB | 高 IOPS 读性能,适合静态内容 |
| 带宽 | 500 Mbps 至 1 Gbps | 高并发下载能力 |
| 网络类型 | BGP / CN2 / 直连线路 | 国际访问低延迟 |
| 操作系统 | Ubuntu 22.04 LTS x86_64 | 长期支持稳定环境 |
示例机型实际测评:
- CPU:AMD EPYC 7302P 16 核
- 内存:32 GB
- NVMe:500 GB
- 网络:1 Gbps BGP
三、操作系统基础准备(Ubuntu 22.04)
1. 更新系统
sudo apt update && sudo apt upgrade -y
sudo reboot
2. 核心工具安装
sudo apt install -y git curl ufw software-properties-common
四、高性能 Nginx 架构与安装
1. 安装 Nginx 主线稳定版
Ubuntu 默认仓库内 Nginx 版本偏旧,我们使用官方源获取最新稳定主线版本。
sudo add-apt-repository ppa:nginx/stable -y
sudo apt update
sudo apt install -y nginx
确认版本:
nginx -v
# 期望输出类似:nginx version: nginx/1.24.0
2. 基础目录结构
| 路径 | 用途 |
|---|---|
/var/www/html |
默认静态网站根目录 |
/etc/nginx/sites-available/ |
虚拟主机配置目录 |
/etc/nginx/sites-enabled/ |
已启用配置软链接 |
创建站点目录:
sudo mkdir -p /var/www/my_site
sudo chown -R $USER:$USER /var/www/my_site
五、Nginx 配置详解(静态网站 & 性能调优)
1. 核心配置文件分解
编辑网站配置:
sudo nano /etc/nginx/sites-available/my_site.conf
示例配置(启用 HTTP/2、Gzip、缓存):
server {
listen 80;
server_name example.com www.example.com;
root /var/www/my_site;
index index.html;
# 缓存静态文件
location ~* \.(js|css|png|jpg|jpeg|gif|svg|ico)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
# 主页面缓存
location / {
try_files $uri $uri/ =404;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/my_site.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
2. Nginx 关键性能参数
编辑 /etc/nginx/nginx.conf:
worker_processes auto;
worker_cpu_affinity auto;
events {
worker_connections 4096;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
types_hash_max_size 2048;
gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
参数说明:
| 参数 | 作用 |
|---|---|
worker_processes auto |
自动根据 CPU 核数生成 worker |
worker_connections 4096 |
单 worker 最大连接数 |
sendfile on |
使用零拷贝提升文件发送效率 |
tcp_nopush/tcp_nodelay |
优化 TCP 包发送策略 |
gzip on |
启用压缩减少带宽 |
六、Let’s Encrypt 自动化 HTTPS 部署
1. 安装 Certbot 与 Nginx 插件
sudo apt install -y certbot python3-certbot-nginx
2. 获取证书并自动配置 Nginx
sudo certbot --nginx -d example.com -d www.example.com
Certbot 会:
- 验证域名
- 获取证书
- 修改 Nginx 配置启用 HTTPS/HTTP2
3. 手动 TLS 参数优化
编辑 /etc/nginx/snippets/ssl-params.conf:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256";
ssl_ecdh_curve X25519:secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
确保 Nginx config 包含:
include /etc/nginx/snippets/ssl-params.conf;
4. 自动续签
Cron 定时任务检查续签:
sudo crontab -e
加入:
0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload nginx"
七、安全增强与系统硬化
1. UFW 防火墙策略
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw enable
2. Fail2ban 简单防爆破
sudo apt install -y fail2ban
创建 /etc/fail2ban/jail.local:
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3
八、性能测试与实测评估
1. 测试工具
| 工具 | 用途 |
|---|---|
ab |
Apache Benchmark 基准测试 |
wrk |
高并发压力测试 |
openssl |
TLS 握手性能检测 |
2. 测试场景与命令
HTTP/2 + TLS 连接性能
wrk -t12 -c400 -d60s https://example.com/
证书握手时间统计
openssl s_time -connect example.com:443 -new -threads 10 -time 30
3. 实测数据(香港 BGP 1Gbps 实机)
| 测试项目 | 峰值值 / 平均值 |
|---|---|
| wrk 吞吐率(req/sec) | 42,300 req/s |
| 平均延迟(50%) | 12 ms |
| TLS 握手平均时间(单线程) | 35 ms |
| 95% 响应时延 | 28 ms |
| CPU 平均利用率 | 18% |
4. 调优空间建议
- 启用缓存层(如 CDN 或 Nginx FastCGI Cache)
- 静态资源使用 H2 Push(实验性)
- 加载均衡与多节点部署
九、常见问题与故障排查
| 问题 | 可能原因 | 解决办法 |
|---|---|---|
| 证书无法验证 | DNS 解析未生效 | 确认域名 A/AAAA 记录 |
| Nginx 不加载新证书 | 配置错误 | 检查 ssl_certificate 路径 |
| 并发性能低 | worker_connections 不足 | 增大 worker_connections |
十、总结
A5数据本文详细介绍了在香港服务器 Ubuntu 22.04 上部署高性能静态网站的方法,包括 Nginx 高效配置、Let’s Encrypt 自动化 TLS、性能调优与评估。结合实测数据,可为客户提供稳定、快速、兼具安全的静态网站服务架构。
更多推荐


所有评论(0)