是否可用openresty作为grpc的路由(更新:目前看我觉得不行)

已知

grpc(https://grpc.io/) 本质上是通过http2.0来进行通讯,OpenResty(http://openresty.org/cn/) 核心其实也是nginx,也是可以支持处理http2.0请求的,所以打算用它来搞一个中间件,相当于是grpc的路由。 但是目前仍在尝试中,并且发现nginx不能很好的处理http2.0的请求(当然很大概率是我grpc那边写的不对或者是nginx使用姿势不对)。

想了解的&讨论的

有人使用过类似的解决方案吗?或者使用nginx处理http2.0请求的方案,如果有可否讨论一下nginx配置的一些情况?

目前的结论

查了一些资料了解了一下,发现nginx对http2的支持仅仅局限于server端,并且从官网看目前他们也对支持完整的http2服务不感兴趣(没有开发计划),也就是说只能作为请求的接受者(这一点我也在尝试时发现了,nginx会把收到的http2请求转发出去的时候强行转成http1.1类型)。 https://github.com/http2/http2-spec/wiki/Implementations 这里有一个http2的支持列表,可以看到nginx的标注仅为server。。。

后续计划

打算换用nghttp2来搞。。。这个库似乎有不少人已经踩过坑了

已邀请:

kevin - 杭州云柚科技

赞同来自: lwhile

Nginx对HTTP/2反代支持有问题的,具体讨论参考 https://github.com/grpc/grpc.github.io/issues/230 目前除了自己打Patch以外,你可以试试换个比如 Caddy 这样的解决方案上去。

cholerae

赞同来自:

应该可以。gRPC 当初选择 http/2 协议的一个原因就是可以复用现成的 http 设施。

要回复问题请先登录注册