为什么gRPC客户端对cerbot的请求启用了nginx服务器报告`ai_socktype`错误

时间:2019-07-03 07:33:09

标签: nginx grpc

我为代理HTTPS服务安装了nginx,因此我使用“让我们加密”功能来自动配置证书,并将所有80流量重定向到443。

最近,我正在考虑添加gRPC服务,因此我的想法是添加一个特定的URI,以便gRPC客户端可以拨打以下地址:domain.com:443/rpc

此后,我遵循了nginx官方文档:https://www.nginx.com/blog/nginx-1-13-10-grpc/

并配置了网站:

location /rpc {
    grpc_pass grpc://localhost:12345/
}

在服务器的HTTPs部分中。

但是,gRPC客户端报告:

rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp: lookup tcp/443/rpc: Servname not supported for ai_socktype" exit status

这是客户端代码:

conn, err := grpc.Dial("domain.com:443/rpc", grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{InsecureSkipVerify: true})))
if err != nil {
    logrus.Fatalf("did not connect: \n\t%v", err)
}
defer conn.Close()
...

简而言之,请求链如下:

gRPC客户端(启用SSL)<----> Nginx(具有SSL证书)<---> Intranet gRPC服务器(不具有SSL)

如何解决该错误?是因为我没有将gRPC调用的客户端证书附加到Nginx吗?如果是这样,是否有可能使客户端像浏览器与HTTPS服务器协商一样自动解决证书问题?

0 个答案:

没有答案