2018年3月17日,NGINIX官方宣佈在nginx 1.13.10中將會支持gRPC,這一宣告表示了NGINX已完成對gRPC的原生支持。衆所周知,gRPC已是新一代微服務的事實標準RPC框架。對於實現來講,能夠用服務框架等手段來作到負載均衡,但業界其實尚未很是成熟的針對gRPC的反向代理軟件。html
NGINIX做爲老牌負載均衡軟件對gRPC進行了支持,以前已經能夠代理gRPC的TCP鏈接,新版本以後,還能夠終止、檢查和跟蹤 gRPC 的方法調用:nginx
在客戶端和服務器應用程序之間插入 NGINX,爲服務器應用程序提供了一個穩定可靠的網關。git
使用 Nginx 官方提供的docker image搭建server:github
$ docker pull nginx:1.13.10 1.13.10: Pulling from library/nginx 2a72cbf407d6: Pull complete fefa2faca81f: Pull complete 080aeede8114: Pull complete Digest: sha256:c4ee0ecb376636258447e1d8effb56c09c75fe7acf756bf7c13efadf38aa0aca Status: Downloaded newer image for nginx:1.13.10
Nginx 使用 HTTP 服務器監聽 gRPC 流量,並使用 grpc_pass 指令代理流量。 爲 Nginx 建立如下代理配置,在端口 80 上偵聽未加密的 gRPC 流量並將請求轉發到端口31320
上的服務器:docker
grpc_proxy.conf文件
:segmentfault
upstream grpcservers { server 10.15.160.1:31320; # Skywalking OAP 後端 11800 地址 } server { listen 80 http2; location / { grpc_pass grpc://grpcservers; error_page 502 = /error502grpc; } location = /error502grpc { internal; default_type application/grpc; add_header grpc-status 14; add_header grpc-message "unavailable"; return 204; } }
docker run --name mynginx4grpc -p 80:80 -v tmp4myworkspace:/etc/nginx/conf.d:ro -d nginx:1.17
其中,上述 Nginx 配置文件位於 tmp4myworkspace
目錄下。後端
文章轉載自公衆號:摳腚Coding筆記bash
本文由博客一文多發平臺 OpenWrite 發佈!