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

天翼云开发者社区
• 阅读 5

本文分享自天翼云开发者社区《在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经过多层级的转发后仍然保持正常的状态。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
gRPC应用C++
1. gRPC简述RPC,远程方法调用,就是像调用本地方法一样调用远程方法。gRPC(http://www.oschina.net/p/grpcframework)是Google实现的一种RPC框架,基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特。这些特性使得其在移动设备上表
Stella981 Stella981
4年前
Dubbo 接口转化为gRPC服务
公司是多语言研发环境,目前Java项目居多,使用Dubbo进行服务间调用。目前公司Nodejs项目、Golang已经很多,平常也用阿里开源的eggjs框架进行开发。经过技术选型,gRPC(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fgrpc.io)支持跨语言、高性能、HTTP/2,使用
Wesley13 Wesley13
4年前
gRPC官方文档(gRPC基础:C++)
文章来自gRPC官方文档中文版(http://doc.oschina.net/grpc?t56831)本教程提供了C程序员如何使用gRPC的指南。通过学习教程中例子,你可以学会如何:在一个.proto文件内定义服务.用protocolbuffer编译器生成服务器和客户端代码.使用gRPC的C
Stella981 Stella981
4年前
Golang gRPC 使用
一、概念1、gRPC默认使用protocolbuffers,这是google开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如JSON),可以用protofiles创建gRPC服务,用protocolbuffers消息类型来定义方法参数和返回类型。二、安装1、yuminstallautoconfaut
Stella981 Stella981
4年前
Golang gRPC实践 连载一 gRPC介绍与安装
gRPC(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.grpc.io%2F) 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP/2(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fht
在nginx中实现回源日志的功能
本文分享自天翼云开发者社区《》.作者:尹聪nginx中已经提供了访问日志的功能,主要对客户端的访问状态等进行记录,比如响应给客户端的状态码,请求uri,请求协议等。而对于回源(或者回后端)的请求状态记录较少,如后端的地址、端口、状态码等这些有记录。在反向代
文盘Rust -- tonic-Rust grpc初体验 | 京东云技术团队
gRPC是开发中常用的开源高性能远程过程调用(RPC)框架,tonic是基于HTTP/2的gRPC实现,专注于高性能、互操作性和灵活性。该库的创建是为了对async/await提供一流的支持,并充当用Rust编写的生产系统的核心构建块。今天我们聊聊通过使用tonic调用grpc的的具体过程。
API 小达人 API 小达人
1年前
Eolink Apikit「 零代码」快速发起 RPC 接口自动化测试
RPC(RemoteProcedureCall)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC的核心思想是将远程服务抽象成一个接口,客户端通过调用这个接口,就可以实现对远程服务的访问。EolinkApikit支持多协议,RPC、DUBBO、HTTP、REST、Websocket、gRPC、TCP、UDP、SOAP、HSF等。零代码快速发起RPC接口自动化测试,可以根据RPC接口文档自动生成测试用例,开发者只需简单修改即可使用。
gRPC-第二代rpc服务
背景在如今云原生技术的大环境下,rpc服务作为最重要的互联网技术,蓬勃发展,诞生了许多知名基于rpc协议的框架,其中就有本文的主角gRPC技术。一款高性能、开源的通用rpc框架作者作为一名在JD实习的Cpper,经过一段时间的学习和实践,发现了C与Ja
在nginx中实现回源日志的功能
本文分享自天翼云开发者社区《》.作者:尹聪nginx中已经提供了访问日志的功能,主要对客户端的访问状态等进行记录,比如响应给客户端的状态码,请求uri,请求协议等。而对于回源(或者回后端)的请求状态记录较少,如后端的地址、端口、状态码等这些有记录。在反向代
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
952
粉丝
16
获赞
40