如何使用 caddy 作为带有 h​​ttps 的本地域的反向代理

Hnu*_*nus 5 reverse-proxy caddy caddyfile

是否可以使用 caddy 进行本地开发,其中您有https://mysite.loc并使用 Caddyfile 作为本地主机上运行的服务的反向代理?

我的主机文件,所以我有本地 mysite.loc 域

127.0.0.1   mysite.loc
Run Code Online (Sandbox Code Playgroud)
mysite.loc {
  reverse_proxy /api localhost:5000
  reverse_proxy /admin localhost:6000
  reverse_proxy /graphql localhost:7000
  reverse_proxy localhost:4000

  tls ???
}

Run Code Online (Sandbox Code Playgroud)

这就是我已经走了多远。我认为我需要以某种方式将 mysite.loc 指向正在运行的 caddy 守护进程,以便它可以拦截提供生成的证书的请求,然后我将在本地信任该证书,并充当重定向到本地运行的服务的代理。我还认为我不需要自己生成任何证书球童应该这样做吗?我还想避免使用 mysite.loc 的任何端口,例如https://mysite.loc:4000只是https://mysite.loc,然后让 Caddy 处理其余的事情。我也想避免使用 docker。

Jon*_*han 1

我还没有测试过这个,但我的直觉反应是:不,你不能。

我的原因是 caddy 通过 Let's Encrypt (LE) 来保护 HTTPS,而 LE 的工作方式是通过 caddy 在服务器内部放置一个信标来验证站点,然后 LE 查询信标是否有正确的内容。因此,如果该站点仅位于本地主机上且未向 WAN 开放,那么 LE 将无法查询。LE 需要访问权限。您可以尝试将站点打开到 WAN,进行 LE 身份验证,然后将其关闭到 WAN,但我不认为这可行。

话虽这么说,如果您想要的只是本地开发人员的 HTTPS,请使用自签名证书。请记住,HTTPS 对于本地开发人员来说很愚蠢,因为 HTTPS 的全部目的是在传输中加密,而本地主机没有传输