国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

Nginx配置代理gRPC的方法

2024-08-30 12:25:06
字體:
來源:轉載
供稿:網友

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

安裝Nginx

Nginx版本要求:1.13.10。

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

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

Nginx以明文的方式發布gRPC服務。

nginx是使用http服務器監聽gRPC的請求。

示例:

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用來指定代理的gRPC服務器地址,前綴協議有兩種:

    grpc://:與gRPC服務器端交互是以明文的方式 grpcs://:與gRPC服務器端交互式以TLS加密方式

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

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

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

Nginx以TLS加密方式公開gRPC服務

在生成環境建議使用Nginx是以加密的方式發布gRPC。這種情景需要在Nginx添加一個加密層。

在開發/測試環境可以使用自簽名證書,關于自簽名證書可以參考此簡明教程。

配置示例:

server { listen 1443 ssl http2; ssl_certificate ssl/cert.pem; ssl_certificate_key ssl/key.pem; location / {   grpc_pass grpc://localhost:50051; }}

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

gRPC客戶端也是需要TLS加密。如果是使用自簽名證書等未經信任的證書,客戶端都需要禁用證書檢查。在部署到生產環境時,需要將自簽名證書換成由可信任證書機構發布的證書,客戶端也需要配置成信任該證書。

代理加密的gRPC

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

nginx層修改如下:

grpc_pass grpcs://localhost:50051;

nginx路由gRPC請求

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

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;}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长海县| 蒙山县| 平安县| 梁平县| 浙江省| 和政县| 高清| 米林县| 光泽县| 宜黄县| 云林县| 泗阳县| 怀远县| 磐石市| 大埔县| 崇义县| 青州市| 台安县| 石首市| 呼伦贝尔市| 安宁市| 济阳县| 东安县| 比如县| 南乐县| 湟中县| 贵德县| 郁南县| 和田市| 隆安县| 六盘水市| 祁东县| 三亚市| 石家庄市| 蕲春县| 饶平县| 石门县| 汕头市| 海口市| 香格里拉县| 武夷山市|