> 백엔드 개발 > Golang > gRPC 오류: '서버 서문을 받기 전에 연결이 닫혔습니다'를 수정하는 방법은 무엇입니까?

gRPC 오류: '서버 서문을 받기 전에 연결이 닫혔습니다'를 수정하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-11 07:29:09
원래의
395명이 탐색했습니다.

gRPC Error: How to Fix

gRPC 오류: "서버 머리말 수신 전에 연결이 닫힘" 해결

제공된 코드 조각을 사용하여 gRPC 서버에 연결을 시도하는 경우:

func newClient() *dgo.Dgraph {
    d, err := grpc.Dial("localhost:9080", grpc.WithInsecure())
    if err != nil {
        log.Fatal(err)
    }

    return dgo.NewDgraphClient(
        api.NewDgraphClient(d),
    )
}
로그인 후 복사

다음과 같은 상황이 발생할 수 있습니다. 오류:

rpc error: code = Unavailable desc = connection closed before server preface received
로그인 후 복사

근본 원인

이 오류는 일반적으로 TLS(전송 계층 보안)가 활성화된 상태로 서버가 실행 중이지만 클라이언트가 연결을 시도할 때 발생합니다. TLS를 사용하지 않고.

해결책

해결하려면 이 문제를 해결하려면 다음 사항을 확인해야 합니다.

  1. TLS 옵션이 클라이언트에서 올바르게 구성되어 있는지:

    tlsConfig := &tls.Config{
        Certificates: []tls.Certificate{myCertificate},
        RootCAs:      myCAPool,
    }
    
    tlsOpt := grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig))
    
    conn, err := grpc.DialContext(ctx, "<connection_string>", tlsOpt)
    로그인 후 복사
  2. 클라이언트 인증서는 클라이언트에서 사용됩니다. 연결:

    클라이언트 연결에서 클라이언트 인증서를 활용하고 있는지 확인하세요.

클라이언트에서 TLS를 올바르게 구성하면 "연결이 닫히는 것을 방지할 수 있습니다." before server preface received" 오류가 발생하고 TLS 지원 서버에 성공적으로 연결됩니다.

위 내용은 gRPC 오류: '서버 서문을 받기 전에 연결이 닫혔습니다'를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿