美文网首页
mac 使用grpcwebproxy(grpc代理)

mac 使用grpcwebproxy(grpc代理)

作者: CRJ997 | 来源:发表于2020-05-15 11:23 被阅读0次

     因为后端搭建起来的是grpc服务器,不能够直接使用http请求请求服务器,所以需要一个代理把前端的http请求变成grpc请求才行。因此便开始看看怎么去完成这个代理。看improbable-eng/grpc-web这个库的时候,发现它自己带了一个代理服务器grpcwebproxy。然后便照着它那边的安装方法去安装了。

安装

安装的话,就完全照着库那边的引导去安装了,但是首先要注意的是先安装go环境,并且在环境变量中把go的bin路径加入,加入路径的方式这位老哥说的很详细,链接。安装go环境的话,去官网下载就行了。装好之后,再安装dep。这个我是用homebrew安装的。或许也可以用其他方式安装。安装dep耗时非常久,只能慢慢等了。然后就是按照grpc-web的流程去安装了。如图1.1,每一行都是一个命令行语句。

图1.1

它那边还有个使用现有的二进制文件的,但是我不会用这个二进制文件,所以就直接用building from source了。好了,安装好之后,在~/go/bin下面就会有个grpcwebproxy的可执行文件。这边建议把这个也加入环境变量中,这样就可以随时执行了。

使用

使用的话,很简单,在命令行敲入grpcwebproxy [options]就可以了。但是问题是按照grpc-web库中的使用方法,如图1.2,没有办法连上服务器。所以便看了一下源码。发现还有比较多的命令行选项没有列出来,所以这边说明一下选项(也没写全,不过够用了), 如表1.1。


图1.2
表1.1
选项 作用 默认
--server_tls_cert_file 设置代理服务器的https证书, 开启https代理服务器的时候必填
--server_tls_cert_key 设置代理服务器的https证书key,开启https代理服务器的时候必填 ../misc/localhost.key
--use_websockets 设置是否使用websocket false
--server_bind_address 代理服务器地址 0.0.0.0
--backend_max_call_recv_msg_size 设置单次请求可接受后端的最大信息量, 默认4MB,单位字节 4MB
--allow_all_origins 设置cors,写了这个表示允许所有域名可以访问
--run_http_server 设置是否启用http代理(表示启用接受http请求的代理服务器) true
--run_tls_server 设置是否启用https代理(表示启用接受https请求的代理服务器) ,注意设置这个选项之后,必须要设置 --server_tls_cert_file 和 --server_tls_cert_key true
--server_http_debug_port 设置启用的http代理服务器的端口号,默认8080 8080
--server_http_tls_port 设置启用的https代理服务器的端口号,默认8443 8443
--backend_addr 设置远端服务器的地址,包括主机名和端口
--backend_tls_noverify 设置是否跳过证书检查,生产环境请勿使用 false
--backend_client_tls_cert_file 设置远端服务器请求客户端证书的时候,客户端的证书位置
--backend_client_tls_key_file 设置远端服务器请求客户端证书key的时候,客户端的证书key的位置
--backend_tls 设置远端服务器是否开启了https服务 false
--allowed_headers 设置代理服务器允许的http头部
--allowed_origins 设置代理服务器允许的http域名

因为我用来作为本地开发,远端是https服务,需要使用websockets,所以如下配置,客户端证书用openssl生成,如何生成可以看看这位大佬的文章

grpcwebproxy --backend_addr=远端服务器地址 --backend_tls=true --backend_client_tls_cert_file=客户端证书路径 --backend_client_tls_key_file=客户端证书key路径 --run_tls_server=false --allow_all_origins


输入之后代理成功启动(这边我已经把grpcwebproxy加入环境变量),项目的基础请求路径改成代理服务器地址之后,可以成功发起请求,完成代理。再写一条远端非https服务器,然后使用websocket的指令:

grpcwebproxy --backend_addr=远端服务器地址 --backend-tls=false --run_tls_server=false --use_websockets=true


OK,以上

相关文章

  • mac 使用grpcwebproxy(grpc代理)

    因为后端搭建起来的是grpc服务器,不能够直接使用http请求请求服务器,所以需要一个代理把前端的http请求变成...

  • GRPC-quick start

    首先,确保你设置了代理: 随后,安装 gRPC,如果你使用 go module,可以直接引用: import "g...

  • grpcwebproxy代理服务2步启动

    在看这篇文章之前,先要做好前提工作 1、搭建一个gRPC服务:http://fenxianglu.cn/artic...

  • Mac上使用Charles抓包

    Mac上使用Charles抓包 工具 Charles iPhone代理设置 获取Mac IP地址 Charls设置...

  • Mac终端代理和git代理设置

    Mac终端代理设置 使用的s s代理 1.临时代理在终端中输入 这是代理本身走的https/http或者 这是代理...

  • grpc初探

    1 grpc的定义 grpc good rpc grpc使用protobuf文件声明服务,服务端和客户端都通使用...

  • 深入学习 GRPC - 2. 加密非流式的字节结构

    本篇主要进行加密非流式 GRPC 的通信在字节层面的讨论,使用带 TLSv1.2 的 nginx 节点代理非加密的...

  • google grpc 快速入门

    为什么去使用gRPC 使用gRPC,我们可以在.proto文件中定义我们的服务,并以任何gRPC支持的语言实现客户...

  • Mac代理设置

    Mac使用ss开代理,只支持浏览器代理,其他软件没法通过代理访问网络,要做一些特殊的配置

  • Hyperledger-Fabric-SDK-设计

    概要 区块链网络使用 gRPC 协议 Protocol Buffers(格式的 API) 使用的协议 gRPC P...

网友评论

      本文标题:mac 使用grpcwebproxy(grpc代理)

      本文链接:https://www.haomeiwen.com/subject/tciqohtx.html