【问题标题】:How can I use nginx 1.9.5 as a reverse proxy with gRPC?如何使用 nginx 1.9.5 作为 gRPC 的反向代理?
【发布时间】:2021-01-08 02:08:38
【问题描述】:

我想要

  • 用 Java 编写我的后端代码,
  • 使用HTTP/2(NGINX 1.9.5已经支持HTTP/2),
  • 编写双向流,随时在客户端和服务器之间发送数据。

gRPC 似乎是最好的选择,我想使用 NGINX 作为我的反向代理和负载平衡,我找不到任何文档来弄清楚如何使用 NGINX使用 gRPC Java,有人知道吗?


我看到gRPC PHP已经支持NGINX了:https://github.com/grpc/grpc/tree/master/src/php#use-the-grpc-php-extension-with-nginxphp-fpm

但是我也看到有an issue说它正在提交NGINX中的第3方模块以支持gRPC,而NGINX上有a ticket表示我们不能编写HTTP/2 NGINX代理模块对于gRPC,我也看到nginx does not support the full HTTP/2 specs, gRPC does not work through it

我对此感到困惑,为什么有些帖子说 gRPC PHP 可以工作,而在其他帖子中却说不能。

【问题讨论】:

标签: nginx proxy grpc grpc-java


【解决方案1】:

不在 nginx 上,但我刚刚发布了一个用 Go 编写的 grpc-proxy。它是轻量级和可配置的,并且有一个docker image 可用。

【讨论】:

    【解决方案2】:

    是的,现在,NGINX 确实完全支持带或不带 TLS 的 gRPC/HTTP2,只要您拥有 1.13.9 版本(如果您只是安装带有 alpine 或 latest 标签的 docker 映像,那么它将是正确的版本)。

    截至(至少)2020 年末,它得到了全面支持。这是他们官方文档的链接:

    https://www.nginx.com/blog/nginx-1-13-10-grpc/

    【讨论】:

    • 老实说,它真的没有那么不同/复杂 - 我正在尝试将我的用作 API 网关,因为像 Netflix Zuul 和 Spring Cloud Gateway 这样的 Spring Cloud 模块仍然不能同时支持 HTTP/2或 2021 年初的 gRPC 转发 - 这令人失望,因为它们具有许多其他出色的功能,而且配置起来也少了很多麻烦......
    • 这是一个 GitHub 问题 - 以防将来有任何更新 - github.com/spring-cloud/spring-cloud-gateway/issues/40
    猜你喜欢
    • 2015-02-09
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    相关资源
    最近更新 更多