gRPC proxy is a Go reverse proxy that allows for rich routing of gRPC calls with minimum overhead.
gRPC proxy is a Go reverse proxy that allows for rich routing of gRPC calls with minimum overhead.
gRPC Go Proxy server
Build a transparent reverse proxy for gRPC targets that will make it easy to expose gRPC services over the internet. This includes:
The project now exists as a proof of concept, with the key piece being the proxy package that
is a generic gRPC reverse proxy handler.
The package proxy contains a generic gRPC reverse proxy handler that allows a gRPC server to
not know about registered handlers or their data types. Please consult the docs, here's an exaple usage.
You can call proxy.NewProxy to create a *grpc.Server that proxies requests.
…Then you need to register it with a grpc.Server. The server may have other handlers that will be served
locally.
server := grpc.NewServer(
grpc.CustomCodec(proxy.Codec()),
grpc.UnknownServiceHandler(proxy.TransparentHandler(director)))
pb_test.RegisterTestServiceServer(server, &testImpl{})To make debugging a bit simpler, there are some helpers.
testservice contains a method TestTestServiceServerImpl which performs a complete test against
the reference implementation of the TestServiceServer.
In proxy_test.go, the test framework spins up a TestServiceServer that it tests the proxy
against. To make debugging a bit simpler (eg. if the developer needs to step into
google.golang.org/grpc methods), this TestServiceServer can be provided by a server by
passing -test-backend=addr to go test. A simple, local-only implementation of
TestServiceServer exists in testservice/server.
grpc-proxy is released under the Apache 2.0 license. See LICENSE.txt.
No open issues yet, or sync has not completed.