如何使用nginx 1.9.5作为gRPC反向代理?

5

我希望使用Java编写后端代码,使用HTTP/2(NGINX 1.9.5已支持HTTP/2),编写双向流以在任何时候在客户端和服务器之间发送数据。

gRPC似乎是最好的选择,我想使用NGINX作为我的反向代理和负载均衡器,但我找不到任何文档来解决如何在Java中使用gRPC和NGINX的问题,有人知道吗?


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

但我还看到一个问题说正在提交一个第三方模块用于支持gRPC的NGINX,而且NGINX上有一个票意味着我们不能为gRPC编写HTTP/2 NGINX代理模块,我也看到nginx不支持完整的HTTP/2规范,gRPC不能通过它工作

我对此感到困惑,为什么有些帖子说gRPC PHP可以工作,而其他帖子则表示无法工作。


1
gRPC已经在1.13.10中添加,对于那些感兴趣的人可以查看:https://www.nginx.com/blog/nginx-1-13-10-grpc/ - Dean Coakley
2个回答

4

虽然不是基于nginx,但我刚发布了一个用Go编写的grpc-proxy。它很轻量且可配置,并提供docker镜像


0

现在,只要您安装了1.13.9版本(如果您安装了具有alpine或latest标记的docker映像,则将是正确版本),NGINX完全支持使用或不使用TLS的gRPC/HTTP2。

至少在2020年末,它已经完全支持。这是他们官方文档的链接:

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


说实话,这并不是很不同或复杂——我正在尝试将我的应用程序作为API网关使用,因为在2021年初,Spring Cloud模块(如Netflix Zuul和Spring Cloud Gateway)仍然无法支持HTTP/2或gRPC转发,这让人失望,因为它们有许多其他好的功能,并且配置起来要简单得多... - Ben Neighbour
这里有一个关于此问题的 GitHub Issue - 以防将来有任何更新 - https://github.com/spring-cloud/spring-cloud-gateway/issues/40 - Ben Neighbour

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接