通过 Apache 反向代理转发时,GRPC 流式传输不起作用

通过 Apache 反向代理转发时,GRPC 流式传输不起作用

我有一个 gRPC 服务,我想将其部署在 Apache 反向代理后面。

apache的配置类似如下:

LoadModule http2_module modules/mod_http2.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so
...
<VirtualHost _default_:443>
  SSLEngine on
  SSLProxyEngine on
  ServerName service.mydomain.com:443
  SSLCertificateFile ".../mycert.crt"
  SSLCertificateKeyFile ".../mycert.key"
    
  ProxyPass / h2c://localhost:5048/
  ProxyPassReverse / http://localhost:5048/

</VirtualHost>

一元 RPC-s 工作正常。但我想使用双向调用。这些调用永远不会结束,超时后我会收到错误。

我尝试了多次,包括增加超时时间等,但都没有成功。

可能是什么问题呢?

答案1

ProxyPass尝试将和指令更改ProxyPassReverse为以下内容

ProxyPass "/" "h2://localhost:5048/"
ProxyPassReverse "/" "h2://localhost:5048/"

您可能还需要调整TimeoutProxyTimeout指令以确保请求有足够的时间完成。您可以尝试增加这些值以查看是否能改善行为。

Timeout 600
ProxyTimeout 600

相关内容