如何将 gRPC 与 cloudflare+nginx+fabio 结合使用?

问题描述 投票:0回答:1

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

我可以从 access.log 看到请求实际上是通过 http/2.0 到达的,但我很困惑,我不知道在哪里寻找问题。

error.log 也显示了请求:

2022/12/12 23:38:45 [错误] 506072#506072:*1020上游发送太大的http2帧:4740180,同时从上游读取响应头,客户端:61.142.22.151,服务器:grpc.example.com,请求:“POST /Syncer/doUpdate HTTP/2.0”,上游:“grpc://127.0.0.1:9999”,主机:“grpc.example.com:443”

java nginx grpc cloudflare fabio
1个回答
0
投票

添加带端口的 GRPC 监听器解决了问题

将此行添加到 fabio.properties 文件

proxy.addr = :8888;proto=grpc
© www.soinside.com 2019 - 2024. All rights reserved.