写点什么

在 nginx 中通过多级代理支持 grpc 协议

  • 2025-10-24
    北京
  • 本文字数:468 字

    阅读完需:约 2 分钟

本文分享自天翼云开发者社区《在nginx中通过多级代理支持grpc协议》.作者:尹****聪


gRPC 是由 Google 开源的一个 RPC 框架,旨在统一服务间通信的方式。该框架基于 HTTP/2 协议传输,使用 Protocol Buffers 作为接口描述语言,可以自动生成服务间调用的代码。


nginx 提供了一个 grpc 的模块用于实现 grpc 协议的反向代理,通过配置上游转发的方式(grpc_pass)即可,跟 proxy_pass 的使用方式相同,可以通过配置 upstream zone 来实现负载均衡。但是如果想使用多个层级对 grpc 请求进行代理的话,会发现 grpc 客户端会提示 not find trailers 的错误。主要是因为 nginx 在响应过程中会把响应体后面的 trailers 过滤掉,从而导致客户端接收不到预期的 trailers,进而报错。


解决的方案可以在配置文件中通过 add_trailers 这一配置项来添加 trailers,不过这种方法比较受限,首先需要知道 server 端会响应哪些 trailes 头以及内容;


另外一种解决方案是开发一个模块在 nginx 的响应过程中,对 trailers 进行过滤并保存,在响应给上一层级或者客户端时,把 trailers 进行恢复。这样的话便可以实现 trailers 经过多层级的转发后仍然保持正常的状态。

用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
在nginx中通过多级代理支持grpc协议_CDN_天翼云开发者社区_InfoQ写作社区