Java Traefik 代理后面的 Grpc 服务器

Java Grpc server behind the Traefik proxy

这是我的 traefik 配置


[entryPoints]
  [entryPoints.http]
  address = ":81"

[file]
 [backends]
   [backends.backend1]
     [backends.backend1.servers.server1]
     url = "h2c://10.141.11.230:6566"
 [frontends]
   [frontends.frontend1]
   entryPoints = ["http"]
   backend = "backend1"

当 js 网络客户端通过 traefik 代理调用 grpc 服务器时,我在服务器端收到此警告

WARN 22160 --- [-worker-ELG-3-1] io.grpc.netty.NettyServerHandler         : Expected header TE: trailers, but null is received. This means some intermediate proxy may not support trailers

未调用服务方法。

客户端得到 415 (Unsupported Media Type) 响应。

Traefik 1.7.16

grpc-java1.22.1

grpc-web@1.0.6

我错过了什么?谢谢

TE: trailers 警告在您的情况下是误报; I've created a grpc-java PR 以防止将来发生这种情况。

415才是真正的失败。这意味着客户端使用的内容类型不是 application/grpc。这是因为 grpc-web 使用了需要转换的备用协议。转换协议通常是通过代理完成的;这就是 grpc-web repository.

中提到的 Envoy 代理所做的