![通过 Apache 反向代理转发时,GRPC 流式传输不起作用](https://linux22.com/image/783565/%E9%80%9A%E8%BF%87%20Apache%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E8%BD%AC%E5%8F%91%E6%97%B6%EF%BC%8CGRPC%20%E6%B5%81%E5%BC%8F%E4%BC%A0%E8%BE%93%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有一个 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/"
您可能还需要调整Timeout
和ProxyTimeout
指令以确保请求有足够的时间完成。您可以尝试增加这些值以查看是否能改善行为。
Timeout 600
ProxyTimeout 600