如何在CentOS 9上安装和配置Caddy?
美国、香港服务器
如何在CentOS 9上安装和配置Caddy?
06-18 来源:
一、安装 Caddy 官方稳定版
1. 导入官方 GPG 密钥 + 配置软件源
bash
运行
dnf install -y "dnf-command(copr)"
dnf copr enable -y @caddy/caddy
dnf install -y caddy
2. 启动并设置开机自启
bash
运行
systemctl enable --now caddy
# 查看运行状态
systemctl status caddy
二、放行防火墙端口(80/443)
bash
运行
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
三、SELinux 放行反向代理权限(CentOS9 必须配置,否则 502 报错)
bash
运行
setsebool -P httpd_can_network_connect on
四、Caddy 核心配置文件路径
主配置文件:/etc/caddy/Caddyfile
站点配置推荐统一写在 Caddyfile,也可以用 import conf.d/*.Caddyfile 拆分配置
自动 SSL 证书存放:/var/lib/caddy/.local/share/caddy/certificates/
运行用户:caddy
常用管理命令
bash
运行
caddy reload # 平滑重载配置(推荐)
caddy stop # 停止服务
caddy validate # 校验配置语法
systemctl restart caddy
五、基础配置 1:静态网站示例
编辑配置文件:
bash
运行
vi /etc/caddy/Caddyfile
清空原有内容,写入:
caddyfile
# 绑定域名,自动申请HTTPS,强制HTTP跳转HTTPS
demo.example.com {
root * /usr/share/caddy
file_server
}
校验并重载:
bash
运行
caddy validate
caddy reload
六、实战配置 2:反向代理(大模型 API 中转,支持 WebSocket 流式)
需求:域名 api.xxx.com 反向代理本地 127.0.0.1:3000
caddyfile
api.xxx.com {
# 反向代理后端服务
reverse_proxy 127.0.0.1:3000 {
# 透传客户端真实IP
header_up X-Real-IP {remote}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
# 开启WebSocket支持(流式对话必备)
header_up Upgrade {header.Upgrade}
header_up Connection {header.Connection}
}
# 超时时间适配长文本请求
timeouts {
connect_timeout 300s
read_timeout 300s
write_timeout 300s
}
# 安全响应头
header Strict-Transport-Security "max-age=31536000; includeSubDomains"
header X-Frame-Options DENY
header X-XSS-Protection "1; mode=block"
}
配置生效
bash
运行
caddy validate
caddy reload
访问 https://api.xxx.com 自动 HTTPS,无需手动申请证书。
七、多站点拆分配置(推荐运维管理)
创建配置目录
bash
运行
mkdir -p /etc/caddy/conf.d
在主 Caddyfile 末尾引入所有站点配置
caddyfile
import conf.d/*.Caddyfile
新建站点配置:vi /etc/caddy/conf.d/api.Caddyfile,写入反向代理配置即可。
八、常用进阶配置
1. IP 限流防 CC 攻击
在站点配置内添加:
caddyfile
limit_rate {
requests 20
interval 1s
burst 50
}
2. 本地仅 HTTP 测试(不申请公网 SSL)
caddyfile
http://localhost:8080 {
reverse_proxy 127.0.0.1:3000
}
3. 自定义证书(已有 SSL 证书场景)
caddyfile
api.xxx.com {
tls /etc/ssl/fullchain.pem /etc/ssl/privkey.pem
reverse_proxy 127.0.0.1:3000
}
九、日志配置(方便排查接口异常)
1. 全局日志(所有站点统一日志)
在 Caddyfile 最顶部添加:
caddyfile
{
log file /var/log/caddy/access.log {
format json
roll_size 100mb
roll_keep 10
}
}
十、常见问题排错
证书申请失败
检查域名已正确 A 记录解析、安全组放行 80/443、域名未被墙,Caddy 需要 80 端口完成域名所有权校验。
反向代理 502 错误
后端服务监听 127.0.0.1 而非 0.0.0.0
执行 setsebool -P httpd_can_network_connect on 放行 SELinux 网络权限
WebSocket 流式断开
必须配置 Upgrade、Connection 请求头,同时拉长超时时间。
查看实时日志
bash
运行
journalctl -u caddy -f
十一、卸载命令(如需更换 Nginx)
bash
运行
systemctl stop caddy
systemctl disable caddy
dnf remove -y caddy
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快