【发布时间】:2018-04-23 08:18:05
【问题描述】:
我按照 Traefik 指南设置了 Let's Encrypt and Docker,现在 my-domain.com 正确地接受了带有静态网站的 HTTPS。接下来我想在my-grpc-server.my-domain.com 获得一个在 Traefik 后面运行的 gRPC 服务器。查看使用gRPC with Traefik 的Traefik 文档,我看到说明是使用自签名证书。如何利用我已经拥有 Let's Encrypt 的有效证书这一事实?
尝试解决方案...在我的 grpc-server Docker 容器中,我可能会挂载 Traefik 写入的 acme.json 文件,从该文件中读取密钥,并使用它们来初始化 gRPC 服务器。这需要一些繁重的工作,这很好,但即便如此,我似乎仍然需要不同的 traefik.toml 配置来解释 Traefik 和我的 grpc-server Docker 容器之间的流量需要 SSL 的事实。
更新:到目前为止,我一直在尝试,但没有成功。为了简单起见,我手动导出了 acme 密钥以进行测试,以便将 Let's Encrypt 的内容从图片中删除。
这是 gRPC 客户端错误:
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.CANCELLED, Received http2 header with status: 500)>
还有 Traefik 错误:
level=warning msg="Error forwarding to https://172.18.0.2:443, err: stream error: stream ID 1; INTERNAL_ERROR"
奇怪的是,当我连接 gRPC 客户端时,gRPC 服务器上没有消息。但是,当我在 Web 浏览器 中点击 my-grpc-server.my-server.com 时,我在 Traefik 中遇到了相同的错误,并且在 gRPC 服务器上出现了另一个错误:
E1112 21:06:37.480636928 8 http_server_filter.c:236] GET request without QUERY
我现在想知道为什么流量在 Web 浏览器案例中被转发,而不是在 gRPC 客户端案例中。
【问题讨论】:
标签: docker grpc lets-encrypt traefik