带有球童的 HTTPS 代理

HTTPS proxy with caddy

我正在使用 Golang 应用程序和 Caddy 作为 HTTP 服务器。 golang 应用程序拒绝每个 http 连接,它只能通过 HTTPS 使用。此应用程序是一种被其他应用程序使用的 API/service。因为,它需要 HTTPS 我安装了 Caddy,所以我可以利用自动 SSL 证书并使用代理在端口之间切换。

应用程序在运行端口9000,所以,消费者只会写mysite.com,caddy应该负责重定向请求到端口9000,但保持HTTPS。该站点在 caddy 中的配置是:

mysite.com {
    proxy / :9000 {
        max_fails 1
    }
    log logfile
}

然而,似乎在创建代理时 HTTPS 丢失了。我检查了应用程序的日志(没有 caddy 的日志),我得到了这个:

http: TLS handshake error from xxx.xxx.xxx.xxx:xxxx: tls: oversized record received with length 21536

所以,基于这个错误,在我看来,caddy 制作的 HTTP 代理正在丢失 HTTPS。我能做什么?

来自caddy docs

to is the destination endpoint to proxy to. At least one is required, but multiple may be specified. If a scheme (http/https) is not specified, http is used. Unix sockets may also be used by prefixing "unix:".

所以它可能正在向代理的 https 端点发送 http 请求。

是否

mysite.com {
    proxy / https://localhost:9000 {
        max_fails 1
    }
    log logfile
}

修复它?

如果是这种情况,您可能不需要您的应用在 :9000 上严格监听 https。它可以简化您的部署或证书管理,只让它监听 http 并让 caddy 管理所有证书。