java 如何使用gRPC与cloudflare+nginx+fabio?

flvtvl50  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(171)

我有一个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”

jjjwad0x

jjjwad0x1#

添加带有端口的GRPC侦听器解决了该问题

proxy.addr = :8888;proto=grpc

相关问题