gRPC-Go: обход обнаружения прокси с помощью WithNoProxy
Используйте grpc.WithNoProxy для внутреннего ClientConn, сохраняя нужные transport credentials.
Если к внутреннему сервису gRPC нужно обращаться напрямую, gRPC-Go предоставляет для этого пути опцию подключения:
conn, err := grpc.NewClient(
"dns:///rpc.internal.example:443",
grpc.WithTransportCredentials(transportCredentials),
grpc.WithNoProxy(),
)
Импорт grpc — это google.golang.org/grpc. transportCredentials — существующая конфигурация credentials.TransportCredentials приложения. Обработайте err и закройте conn в обычном жизненном цикле клиента.
WithNoProxy отключает использование прокси для этого ClientConn. Другие клиенты и прокси-окружение процесса остаются без изменений. Пункт назначения должен быть доступен напрямую из сети приложения.
Опция игнорируется, если WithDialer или WithContextDialer задаёт собственный путь подключения; решения о маршрутизации принимает этот dialer. API верхнего уровня помечен как экспериментальный, поэтому сверьте его с установленной версией grpc-go.
NewClient создаёт клиентский канал, не доказывая, что сетевое соединение установлено. Следующий RPC или результат состояния соединения даёт это подтверждение. Обход прокси не требует отключения TLS.