我有一个反向代理。在这里,我将代理反向到api.example.com
和grpc.example.com:443
。我的api
域正在工作,但是当我向grpc.example.com:443
发出请求时,grpc将其视为grpc-web,并将请求发送为grpc.example.com:443/Hello.HelloService/Greeter
。
creds := credentials.NewTLS(&tls.Config{
InsecureSkipVerify: true,
})
opts := []grpc.DialOption{
grpc.WithTransportCredentials(creds),
grpc.WithBlock(),
}
conn, err := grpc.DialContext(context.Background(),
net.JoinHostPort("grpc.example.com", "443"), opts...)
if err != nil {
log.Fatalf("Could not connect to grpc: %v", err)
}
grpc反向代理:
grpcHeader := c.Request.Header.Get("Content-Type")
grpcserver := grpc.Server{}
if grpcHeader == "application/grpc" || grpcHeader == "application/grpc+json" || grpcHeader == "application/grpc+proto" {
grpcserver.ServeHTTP(c.Writer, c.Request)
}
发布于 2022-06-29 19:19:48
HTTP/2请求路径的格式是"/" Service-Name "/" {method name}
。这意味着看到grpc.example.com:443/Hello.HelloService/Greeter
的请求是正常的(而不是表示gRPC正在使用)。
https://stackoverflow.com/questions/72792750
复制相似问题