部署.NET 8 API后遇Caddy ERR_SSL_PROTOCOL_ERROR问题求助
问题排查与修复方案
配置中的明显错误
- 路径拼写错误:
/usr.share/caddy里的句号应为斜杠,正确路径是/usr/share/caddy。路径不存在会导致Caddy启动异常,无法完成Let's Encrypt证书申请流程。 - 指令冲突:
file_server和reverse_proxy同时存在时,Caddy会优先处理静态文件服务,反向代理逻辑不会生效,且可能干扰服务正常启动。 - 日志目录权限问题:
/var/log/caddy目录若未提前创建,或Caddy用户无写入权限,会导致启动失败,进而无法提供HTTPS服务。
修复步骤
修正Caddyfile配置
如果不需要静态文件服务,直接移除root和file_server指令,保留反向代理核心逻辑:{ email myemail@gmail.com } mydns.com { reverse_proxy localhost:5000 log { output file /var/log/caddy/logs.log } }确保日志目录存在并设置权限
执行以下命令创建目录并赋予Caddy用户权限:sudo mkdir -p /var/log/caddy sudo chown -R caddy:caddy /var/log/caddy重启Caddy服务并验证状态
sudo systemctl restart caddy sudo systemctl status caddy若状态显示
active (running),再通过实时日志查看证书申请情况:sudo journalctl -u caddy -f
补充说明
ERR_SSL_PROTOCOL_ERROR 本质是Caddy未正常启动HTTPS服务,导致客户端无法建立SSL连接。优先确保Caddy服务能正常运行,它才会自动完成Let's Encrypt证书的申请、续期和配置。
内容的提问来源于stack exchange,提问作者krcarbo
相关产品推荐
相关产品推荐

