一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識(shí)|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - Nginx - Nginx配置代理gRPC的方法

Nginx配置代理gRPC的方法

2019-12-16 13:483K Nginx

本篇文章主要介紹了Nginx配置代理gRPC的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Nginx 1.13.10新增了對(duì)gRPC的原生支持。本文介紹如何配置Nginx的gRPC。

安裝Nginx

Nginx版本要求:1.13.10。

gRPC必須使用HTTP/2傳輸數(shù)據(jù),支持明文和TLS加密數(shù)據(jù),支持流數(shù)據(jù)的交互。這是為了充分利用 HTTP/2 連接的多路復(fù)用和流式特性。所以在安裝部署nginx時(shí)需要安裝http/2。使用源碼安裝,編譯時(shí)需要加入http_ssl和http_v2模塊:

?
1
$ auto/configure --with-http_ssl_module --with-http_v2_module

Nginx以明文的方式發(fā)布gRPC服務(wù)。

nginx是使用http服務(wù)器監(jiān)聽(tīng)gRPC的請(qǐng)求。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
http {
 server {
  listen 80 http2;
 
  access_log logs/access.log main;
 
  location / {
   # The 'grpc://' prefix is optional; unencrypted gRPC is the default 
   grpc_pass grpc://localhost:50051;
  }
 }
}

指令grpc_pass用來(lái)指定代理的gRPC服務(wù)器地址,前綴協(xié)議有兩種:

  1. grpc://:與gRPC服務(wù)器端交互是以明文的方式
  2. grpcs://:與gRPC服務(wù)器端交互式以TLS加密方式

gRPC服務(wù)器地址的前綴“grpc://”是可以忽略,默認(rèn)就是明文交互方式。

此示例里nginx以明文的方式在80端口發(fā)布gRPC,其中代理的gRPC在后端也是以明文的方式交互。

注意:Nginx是不支持在明文的端口上同時(shí)支持http1和http2的。如果要支持這兩種的http協(xié)議,需要設(shè)置為不同的端口。

Nginx以TLS加密方式公開(kāi)gRPC服務(wù)

在生成環(huán)境建議使用Nginx是以加密的方式發(fā)布gRPC。這種情景需要在Nginx添加一個(gè)加密層。

在開(kāi)發(fā)/測(cè)試環(huán)境可以使用自簽名證書(shū),關(guān)于自簽名證書(shū)可以參考此簡(jiǎn)明教程

配置示例:

?
1
2
3
4
5
6
7
8
9
10
server {
 listen 1443 ssl http2;
 
 ssl_certificate ssl/cert.pem;
 ssl_certificate_key ssl/key.pem;
 
 location / {
   grpc_pass grpc://localhost:50051;
 }
}

示例里在nginx層給gRPC服務(wù)對(duì)外添加了ssl,而內(nèi)部代理到gRPC服務(wù)器仍然是使用明文的交互方式。

gRPC客戶端也是需要TLS加密。如果是使用自簽名證書(shū)等未經(jīng)信任的證書(shū),客戶端都需要禁用證書(shū)檢查。在部署到生產(chǎn)環(huán)境時(shí),需要將自簽名證書(shū)換成由可信任證書(shū)機(jī)構(gòu)發(fā)布的證書(shū),客戶端也需要配置成信任該證書(shū)。

代理加密的gRPC

如果Nginx內(nèi)部代理的gRPC也需要以加密的方式交互,這種情況就需要把明文代理協(xié)議grpc://替換為grpcs://。這首先要gRPC服務(wù)器是以加密的方式發(fā)布服務(wù)的。

nginx層修改如下:

?
1
grpc_pass grpcs://localhost:50051;

nginx路由gRPC請(qǐng)求

如果后端有多個(gè)gRPC服務(wù)端,其中每個(gè)服務(wù)端都是提供不同的gRPC服務(wù)。這種情況可以使用一個(gè)nginx接收客戶端請(qǐng)求,然后根據(jù)不同的路徑分發(fā)路由到指定的gRPC服務(wù)器。使用location區(qū)分:

?
1
2
3
4
5
6
7
8
9
10
11
12
location /helloworld.Greeter {
 grpc_pass grpc://192.168.20.11:50051;
}
 
location /helloworld.Dispatcher {
 grpc_pass grpc://192.168.20.21:50052;
}
 
location / {
 root html;
 index index.html index.htm;
}

對(duì)gRPC請(qǐng)求做負(fù)載均衡

在后端有多個(gè)gRPC服務(wù)器,它們都是同一個(gè)gRPC服務(wù),這種情況可以結(jié)合nginx的upstream可以對(duì)gRPC的請(qǐng)求做負(fù)載均衡。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
upstream grpcservers {
 server 192.168.20.21:50051;
 server 192.168.20.22:50052;
}
 
server {
 listen 1443 ssl http2;
 
 ssl_certificate  ssl/certificate.pem;
 ssl_certificate_key ssl/key.pem;
 
 location /helloworld.Greeter {
  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;
 }
}

其中upstream指定定義了統(tǒng)一gRPC服務(wù)的服務(wù)器組。在grpc_pass指定的gRPC服務(wù)器地址使用upstream定義的服務(wù)器組。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://majing.io/posts/10000009521156

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 蜜桃影像传媒推广 | bbc japanese黑人强行 | 九九影院午夜理论片无码 | 精油按摩日本 | 精品国产理论在线观看不卡 | 双性np肉文 | 国产亚洲精品九九久在线观看 | 99久久精品国产一区二区 | 视频一区二区国产无限在线观看 | 美女扒下内裤让男人桶的图片 | 欧美在线视频一区二区 | 精品免费 | japonensis日本护士18 | 亚洲va精品中文字幕 | 日韩欧美国产综合精品 | 日产乱码卡一卡2卡三卡四福利 | 茄子视频懂你更多apl | 无码AV毛片色欲欧洲美洲 | 国产精品每日在线观看男人的天堂 | 日本成日本片人免费 | 无人视频在线观看完整版高清 | 午夜亚洲WWW湿好大 午夜想想爱 | 短篇最污的乱淫伦小说全集 | 99re8在线精品视频免费播放 | 久久久无码精品亚洲A片猫咪 | 免费国产高清视频 | 国产精品国产三级在线专区 | 成人一区二区免费中文字幕 | 色播艾小青国产专区在线播放 | 精品人人视屏 | 欧美成狂野欧美在线观看 | 午夜福利08550 | 四虎影院新地址 | 全黄毛片 | 超碰成人在线播放 | 欧美成狂野欧美在线观看 | 女子监狱第二季在线观看免费完整版 | 久久AV国产麻豆HD真实 | 国产欧美国产综合第一区 | 国产无套在线播放 | 女人爽到喷水的视频免费看 |