1. 前言

在服务器运维中,反向代理与 HTTPS 是非常常见的需求。
Caddy 是一个现代化 Web 服务器,主打 自动 HTTPS,配置比 Nginx 简单得多。

本文将演示如何在 AlmaLinux 10 上安装并配置 Caddy,实现反向代理并自动申请 SSL 证书。


2. 系统准备

  • 系统:AlmaLinux 10

  • 一台公网服务器

  • 已解析到服务器 IP 的域名(如 example.com

  • root 权限或 sudo 权限


3. 安装 Caddy

安装依赖

sudo dnf install -y dnf-plugins-core

添加 Caddy 官方仓库

sudo dnf copr enable @caddy/caddy

安装 Caddy

sudo dnf install -y caddy

安装完成后,Caddy 会作为 systemd 服务运行。


4. 配置 Caddy

Caddy 的配置文件位于 /etc/caddy/Caddyfile

示例:反向代理到本地服务

假设你有一个在本地运行的应用(例如 http://127.0.0.1:8080),并希望通过 https://example.com 访问:

编辑配置文件:

sudo nano /etc/caddy/Caddyfile

写入内容:

example.com {
    reverse_proxy 127.0.0.1:8080
}

Caddy 会自动:

  • 监听 example.com 的 80 和 443 端口

  • 使用 ACME(Let’s Encrypt)自动申请并续签 SSL 证书

  • 将请求转发到本地服务 127.0.0.1:8080


5. 启动与验证

启动并设置开机自启:

sudo systemctl enable --now caddy

检查运行状态:

systemctl status caddy

如果配置正确,访问 https://example.com 时,Caddy 会自动完成证书申请与安装。


6. 进阶配置

多域名反代

example.com, www.example.com {
    reverse_proxy 127.0.0.1:8080
}

添加重定向(HTTP → HTTPS)

Caddy 默认会自动将 HTTP 重定向到 HTTPS,如果需要强制规则:

http://example.com {
    redir https://example.com{uri}
}

指定日志路径

example.com {
    reverse_proxy 127.0.0.1:8080
    log {
        output file /var/log/caddy/example.log
    }
}

7. 常见问题

  • 证书申请失败
    检查域名是否正确解析到服务器公网 IP,且 80/443 端口未被防火墙或其他服务占用。

  • 服务未启动
    使用 journalctl -u caddy -xe 查看日志,确认配置文件格式是否正确。

  • 多站点配置
    可以在 Caddyfile 中写多个域名块,Caddy 会分别自动签发证书。


8. 总结

Caddy 在 AlmaLinux 10 上的部署非常简单,核心优势在于:

  • 开箱即用的 自动 HTTPS

  • 简洁的配置语法

  • 支持反向代理、负载均衡、日志管理等功能

相比 Nginx,Caddy 对新手和小型项目更友好,适合快速部署。