如何解决C++ grpc 客户端到 Nginx ssl
我有一个用 nginx 包裹的 grpc 服务器。 我正在尝试用不同的语言编写客户端。 python版本运行良好
cred = grpc.ssl_channel_credentials()
channel = grpc.secure_channel(NAME,cred)
stub = MyServiceStub(channel)
但类比的 C++ 代码没有。
auto channel = grpc::CreateChannel(NAME,grpc::SslCredentials(grpc::SslCredentialsOptions()));
auto stub = MyService::NewStub(channel);
nginx 版本 1.16.1(使用 OpenSSL 1.0.2k-fips 构建,2017 年 1 月 26 日)
server {
listen 80;
server_name NAME;
location / {
return 302 grpc://NAME$request_uri;
}
}
server {
listen 443 ssl http2;
server_name NAME;
ssl_certificate chain.pem;
ssl_certificate_key privkey.pem;
location / {
grpc_pass grpc://IP;
grpc_read_timeout 3600;
}
}
nginx 访问日志打印 "PRI * HTTP/2.0" 400 157 "-" "-" "-"
并调试错误请求
[debug] 24255#0: *103047 http check ssl handshake
[debug] 24255#0: *103047 http recv(): 1
[debug] 24255#0: *103047 plain http
[debug] 24255#0: *103047 http wait request handler
但是一个很好的要求
[debug] 30192#0: *105029 http check ssl handshake
[debug] 30192#0: *105029 http recv(): 1
[debug] 30192#0: *105029 https ssl handshake: 0x16
[debug] 30192#0: *105029 tcp_nodelay
[debug] 30192#0: *105029 ssl get session: 5F263490:3
grpc 版本 1.34.0 和 c++ 客户端输出错误
Failed parsing HTTP/2
Expected SETTINGS frame as the first frame,got frame type 80
failed to connect to all addresses
Trying to connect an http1.x server
我发现了一个类似的 Go 问题 How to find out why Nginx return 400 while use it as http/2 load balancer? ,但不知道如何在 C++ 中传递 "h2"。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。