云计算百科
云计算领域专业知识百科平台

使用 Ubuntu 22.04 在香港服务器上部署 Traefik 动态反向代理与 Let’s Encrypt 自动证书签发实战

本文旨在分享一套基于 Ubuntu 22.04 x64 的实战方案,帮助你在香港服务器上构建可动态管理的反向代理系统:使用 Traefik(v2.14+) 作为核心反向代理,结合 Let’s Encrypt 实现自动证书签发与续期。A5数据在本文中介绍了包含具体硬件配置、网络细节、Traefik 配置文件示例、命令步骤及评测数据,可直接用于生产环境部署。


一、环境与整体架构

我们要在一台香港节点服务器www.a5idc.com上完成以下任务:

  • 安装并配置 Traefik 作为动态反向代理;
  • 通过 Let’s Encrypt 自动化获取 TLS 证书;
  • 支持 Docker 容器化部署与动态路由;
  • 实现访问日志、指标监控等基本能力。
  • 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 配置由两部分组成:

  • 静态配置:定义入口点、证书存储、提供者等;
  • 动态配置:用于管理路由、服务、TLS 等。
  • 目录结构:

    /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: exampleservice
    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) 响应性能(香港节点)

    测试项平均值 (ms)
    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 化可选方案与实际测试评测数据。若你有多域名、复杂微服务场景,可在此基础上进一步深化配置与自动化管理。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 使用 Ubuntu 22.04 在香港服务器上部署 Traefik 动态反向代理与 Let’s Encrypt 自动证书签发实战
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!