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

首頁(yè) > 網(wǎng)站 > Nginx > 正文

Nginx配置代理gRPC

2024-08-30 12:23:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  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模塊:
  $ auto/configure --with-http_ssl_module --with-http_v2_module
  Nginx以明文的方式發(fā)布gRPC服務(wù)
  nginx是使用http服務(wù)器監(jiān)聽(tīng)gRPC的請(qǐng)求。
  示例:
  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é)議有兩種:
  grpc://:與gRPC服務(wù)器端交互是以明文的方式
  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)明教程。
  配置示例:
  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客戶(hù)端也是需要TLS加密。如果是使用自簽名證書(shū)等未經(jīng)信任的證書(shū),客戶(hù)端都需要禁用證書(shū)檢查。在部署到生產(chǎn)環(huán)境時(shí),需要將自簽名證書(shū)換成由可信任證書(shū)機(jī)構(gòu)發(fā)布的證書(shū),客戶(hù)端也需要配置成信任該證書(shū)。
  代理加密的gRPC
  如果Nginx內(nèi)部代理的gRPC也需要以加密的方式交互,這種情況就需要把明文代理協(xié)議grpc://替換為grpcs://。這首先要gRPC服務(wù)器是以加密的方式發(fā)布服務(wù)的。
  nginx層修改如下:
  grpc_pass grpcs://localhost:50051;
  nginx路由gRPC請(qǐng)求
  如果后端有多個(gè)gRPC服務(wù)端,其中每個(gè)服務(wù)端都是提供不同的gRPC服務(wù)。這種情況可以使用一個(gè)nginx接收客戶(hù)端請(qǐng)求,然后根據(jù)不同的路徑分發(fā)路由到指定的gRPC服務(wù)器。使用location區(qū)分:
  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ù)載均衡。
  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ù)器組。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙山县| 工布江达县| 民丰县| 姜堰市| 方城县| 苍南县| 察哈| 农安县| 集安市| 哈尔滨市| 开平市| 新安县| 英山县| 老河口市| 莒南县| 涟水县| 西吉县| 漠河县| 东港市| 淮安市| 砚山县| 西吉县| 普陀区| 新邵县| 松潘县| 黎城县| 资溪县| 汉源县| 嵩明县| 独山县| 文山县| 星座| 西盟| 买车| 灵山县| 扬州市| 宜章县| 安塞县| 横峰县| 新野县| 石门县|