第一次使用Caddy。我有一个运行 Docker 容器的 VPS(Hetzner,如果相关的话)来托管我的项目。到目前为止,那里只托管了一个 API,Caddy 负责处理 HTTPS 并充当反向代理,通过子域过滤项目之间的流量。
在添加 Caddy 之前,后端使用 uvicorn for FastAPI 运行良好。
我无法让 Caddy 配置正常工作。我几乎尝试了所有我能想到的组合。对于下面当前的 Caddyfile,块 1-4 可以正常工作。块 5,即使只有响应字符串,也不会。
# 1. This block only works for HTTP requests, not HTTPS as Caddy doesn't provide SSL certs for IP addresses. Not a problem.
server_ip {
redir https://www.mydomain.win 301
}
# 2. Redirect all to www.
mydomain.win {
redir https://www.mydomain.win 301
}
# 3. Redirect all subdomain requests to www.
*.mydomain.win {
redir https://www.{host}{uri} 301
}
# 4. This block is so I can see how the server has responded to the request
www.mydomain.win {
@http {
protocol http
}
@https {
protocol https
}
respond @http "Responded by HTTP" 200
respond @https "Responded by HTTPS" 200
}
# 5. This should ultimately be acting as a reverse proxy, fow now I just want to get it to respond with the below message.
www.subdomain.mydomain.win {
respond "Requested subdomain" 200
# reverse_proxy localhost:8000
}
我大多得到
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
。我可以在证书文件夹中看到它为我尝试访问的子域生成了证书。我正在使用最新的浏览器,但我没有指定密码,因为我认为 Caddy 应该自动执行此操作?
当我将此文件与其他示例进行比较时,它看起来已经明显更加复杂。我尝试指定证书路径位置和不同的密码组合,但没有任何变化。
有明显的地方我出错了吗?
它似乎与 Cloudflare 的代理有关 - 关闭此代理,同时将 SSL 模式保持为严格可以让连接正常工作。切换代理需要一段时间才能生效,因此您必须停用它,然后等待一段时间。我不知道为什么会发生这种情况,只是禁用代理解决了问题。