我有一个gRPC Java应用程序,我配置了Fabio来平衡负载(我将运行2个以上的应用程序示例)和CloudFlare作为代理。
到目前为止我所做的:
Nginx反向代理设置
server {
listen [::]:443 ssl http2 ipv6only=on;
listen 443 ssl http2;
server_name grpc.example.com;
location /{
grpc_pass grpc://127.0.0.1:9999;
}
ssl_certificate /etc/letsencrypt/live/grpc.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/grpc.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
CloudFlare设置:
域的子域配置(图中IP随机)
法比奥装置
gRPC应用程序在Docker容器中运行
当我使用gRPC客户端连接到这个服务器时,我得到nginx错误 “502坏网关”。
我可以从access.log中看到请求实际上到达了http/2.0,但我感到困惑,不知道在哪里查找问题。
error.log也会为请求显示以下内容:
2022年12月12日23:38:45 [错误] 506072#506072:*1020上行发送过大的http 2帧:4740180从上游阅读响应报头时,客户端:61.142.22.151,服务器:grpc.example.com,请求:“POST /同步器/doUpdate HTTP/2.0”,上游:“grpc://127. 0. 0. 1:9999”,主机:“文件名:443”
1条答案
按热度按时间jjjwad0x1#
添加带有端口的GRPC侦听器解决了该问题