如何使用 caddy 作为 https 本地域的反向代理

问题描述 投票:0回答:4

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

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

127.0.0.1   mysite.loc
mysite.loc {
  reverse_proxy /api localhost:5000
  reverse_proxy /admin localhost:6000
  reverse_proxy /graphql localhost:7000
  reverse_proxy localhost:4000

  tls ???
}

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

reverse-proxy caddy caddyfile
4个回答
1
投票

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

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

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


1
投票

似乎使用 .localhost 而不是 .loc 足以让任何想要开始使用的人获得 https,这是我最近的 Caddyfiles 之一

警告:我有点犹豫是否要将此作为答案发布,因为浏览器始终会自动获取更新,因此今天有效的内容可能在您下次打开浏览器时无效。

{ email [email protected] log { format console } } www.{$DOMAIN} { redir https://{$DOMAIN}{uri} } {$DOMAIN} { @websockets { header Connection *Upgrade* header Upgrade websocket } reverse_proxy /graphiql {$API_SERVICE} reverse_proxy /voyager {$API_SERVICE} reverse_proxy /graphql {$API_SERVICE} reverse_proxy /f/* {$API_SERVICE} reverse_proxy @websockets {$CLIENT_SERVICE} reverse_proxy {$CLIENT_SERVICE} }
    

0
投票
可以在本地获取 SSL,但是 Caddy 中的自动 ssl 功能将无法工作,因为它使用 Let's Encrypt。

我建议尝试

mkcert,在成功安装 mkcert 后,运行 mkcert mysite.loc

 生成证书,它应该返回类似以下内容:

Created a new certificate valid for the following names 📜 - "mysite.loc" The certificate is at "./mysite.loc.pem" and the key at "./mysite.loc-key.pem" ✅ It will expire on 6 March 2025
然后在你的 Caddyfile 中添加 

tls

 指令

mysite.loc { reverse_proxy /api localhost:5000 reverse_proxy /admin localhost:6000 reverse_proxy /graphql localhost:7000 reverse_proxy localhost:4000 tls mysite.loc.pem mysite.loc-key.pem }
然后运行它,它应该就可以工作了!


0
投票
检查

Caddy 本地 HTTPS 配置。此外,caddy

还可以向 ACME 客户端颁发证书。详细信息请参见
Caddy ACME Server

© www.soinside.com 2019 - 2024. All rights reserved.