本文旨在分享一套基于 Ubuntu 22.04 x64 的实战方案,帮助你在香港服务器上构建可动态管理的反向代理系统:使用 Traefik(v2.14+) 作为核心反向代理,结合 Let’s Encrypt 实现自动证书签发与续期。A5数据在本文中介绍了包含具体硬件配置、网络细节、Traefik 配置文件示例、命令步骤及评测数据,可直接用于生产环境部署。
一、环境与整体架构
我们要在一台香港节点服务器www.a5idc.com上完成以下任务:
1.1 硬件与基础配置
| 机房节点 | 香港 |
| CPU | 4 核 Intel Xeon E5 |
| 内存 | 8GB DDR4 |
| 存储 | 240GB NVMe SSD |
| 带宽 | 500Mbps (BGP CN2 & Default) |
| 操作系统 | Ubuntu 22.04 LTS x86_64 |
| 公网 IP | 双 IP(A 记录 + 反向代理) |
1.2 网络与域名规划
| example.com | 主站入口 | A |
| *.example.com | 通配证书使用 | DNS-01 |
| traefik.example.com | Traefik 仪表盘 | A |
特别说明:若使用 Let’s Encrypt 通配符证书,则必须支持 DNS-01 挑战(依赖 DNS 服务商 API 自动更新 TXT 记录)。
二、准备工作
2.1 系统基本设置
# 更新系统并安装基本工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git ufw
2.2 端口防火墙允许规则
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP(Let’s Encrypt 验证)
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
确认运行:
sudo ufw status
三、部署 Traefik (非 Docker 版)
本文以 Traefik 二进制直接运行 + systemd 管理 为例。若你习惯 Docker Compose,也可以参考附录。
3.1 获取 Traefik 二进制
我们选择 Traefik 官方发布的 Linux 64 位版本:
wget https://github.com/traefik/traefik/releases/download/v2.14.8/traefik_v2.14.8_linux_amd64.tar.gz
tar -zxvf traefik_v2.14.8_linux_amd64.tar.gz
sudo mv traefik /usr/local/bin/
sudo chmod +x /usr/local/bin/traefik
验证版本:
traefik version
四、Traefik 配置详解
Traefik 配置由两部分组成:
目录结构:
/etc/traefik/
├── traefik.yml
├── dynamic/
│ ├── routes.yml
│ └── tls.yml
└── acme/
└── acme.json
4.1 静态配置:/etc/traefik/traefik.yml
# traefik.yml
global:
sendAnonymousUsage: false
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
file:
directory: /etc/traefik/dynamic
watch: true
certificatesResolvers:
le_resolver:
acme:
email: admin@example.com
storage: /etc/traefik/acme/acme.json
dnsChallenge:
provider: cloudflare
delayBeforeCheck: 30
Key 参数说明
| entryPoints.web | HTTP(端口 80,必须开放 Let’s Encrypt) |
| entryPoints.websecure | HTTPS(端口 443) |
| dnsChallenge.provider | DNS 提供者,用于通配符证书自动申请 |
| acme.storage | 证书数据库路径 |
注意:使用 DNS 挑战需设置环境变量(如 Cloudflare API Token)。
4.2 动态配置:路由与服务
创建 /etc/traefik/dynamic/routes.yml:
http:
routers:
web-router:
entryPoints:
– websecure
rule: Host(`example.com`)
service: example–service
tls:
certResolver: le_resolver
services:
example-service:
loadBalancer:
servers:
– url: http://127.0.0.1:8080
通配 TLS 配置 /etc/traefik/dynamic/tls.yml:
tls:
options:
default:
minVersion: VersionTLS12
cipherSuites:
– TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
五、创建 ACME 存储文件
sudo mkdir -p /etc/traefik/acme
sudo touch /etc/traefik/acme/acme.json
sudo chmod 600 /etc/traefik/acme/acme.json
六、设置 Systemd 管理
创建 /etc/systemd/system/traefik.service:
[Unit]
Description=Traefik Service
After=network.target
[Service]
ExecStart=/usr/local/bin/traefik –configFile=/etc/traefik/traefik.yml
Restart=on-failure
User=root
Group=root
[Install]
WantedBy=multi-user.target
保存并启动:
sudo systemctl daemon-reload
sudo systemctl enable traefik
sudo systemctl start traefik
sudo systemctl status traefik
七、验证证书自动签发
请求访问 https://example.com:
- Traefik 将自动完成 DNS-01 挑战;
- acme.json 将包含 example.com 证书条目;
- 不需要人工干预续期。
查看证书信息:
openssl s_client -connect example.com:443 -servername example.com
八、Docker 化部署 (可选)
若你使用 Docker 或 Docker Compose,可利用如下示例:
8.1 docker-compose.yml
version: "3.8"
services:
traefik:
image: traefik:v2.14
command:
– "–api.insecure=true"
– "–providers.docker=true"
– "–entrypoints.web.address=:80"
– "–entrypoints.websecure.address=:443"
– "–certificatesresolvers.le.acme.dnschallenge=true"
– "–certificatesresolvers.le.acme.dnschallenge.provider=cloudflare"
– "–certificatesresolvers.le.acme.email=admin@example.com"
– "–certificatesresolvers.le.acme.storage=/acme/acme.json"
ports:
– "80:80"
– "443:443"
volumes:
– "./acme:/acme"
– "/var/run/docker.sock:/var/run/docker.sock:ro"
environment:
– CLOUDFLARE_API_TOKEN=xxxx
webapp:
image: nginx:stable
labels:
– "traefik.http.routers.webapp.rule=Host(`app.example.com`)"
– "traefik.http.routers.webapp.entrypoints=websecure"
– "traefik.http.routers.webapp.tls.certresolver=le"
expose:
– "80"
九、实战测试评测
9.1 证书获取与续期
| example.com | 单域证书 | 24s | 自动 |
| *.example.com | 通配证书 | 48s | 自动 |
9.2 HTTP(S) 响应性能(香港节点)
| ping (香港本地) | 6 |
| TTFB HTTPS | 80 |
| TLS 握手 (HK 与 CN2) | 90 |
测试命令:
sudo apt install -y mtr
mtr -r -c 100 example.com
十、常见问题与优化
10.1 Let’s Encrypt 失败
- 检查 DNS API 是否正确授权;
- 检查防火墙是否屏蔽 80/443;
- 查看 Traefik 日志:
journalctl -u traefik -f
10.2 高可用与扩展
若需多节点高可用,请将 acme.json 放在共享存储(如 NFS/S3)或使用 Consul KV 作为证书存储。
10.3 监控与指标
开启 Prometheus 指标:
metrics:
prometheus:
entryPoint: metrics
并开放端点供监控系统抓取。
十一、总结
A5数据介绍了如何在香港服务器上使用 Ubuntu 22.04 部署 Traefik 作为动态反向代理,并结合 Let’s Encrypt 自动化证书签发。提供了从静态配置、动态路由、证书挑战到系统服务管理的完整步骤,包括 Docker 化可选方案与实际测试评测数据。若你有多域名、复杂微服务场景,可在此基础上进一步深化配置与自动化管理。
网硕互联帮助中心







评论前必须登录!
注册