当前位置: 首页 > news >正文

[nginx]反向代理grpc

nginx从1.13.10版本开始提供对gRPC代理的支持。由于grpc基于http2,因此编译nginx时需要添加参数--with-http_v2_module来启用对http2协议的支持。

常用配置

应该是nginx 1.25版本开始,声明http2的语法应该单独写,而不是写在listen中。

listen 80;
http2 on;
  • 基本配置
http {server {listen 80 http2;location / {grpc_pass grpc://192.168.0.14:84;}}# 示例2, 通过server_name复用端口server {listen 80 http2;server_name demo2.test.com;location / {grpc_pass grpc://192.168.0.14:85;}}
}
  • 反向代理后端SSL gRPC
server {listen 80 http2;grpc_ssl_verify off; # 关闭对grpc服务器的ssl证书验证grpc_ssl_session_reuser on; # 启用与grpc服务器https连接的ssl会话重用功能location / {grpc_pass grpcs://192.168.0.14:84; # grpc后端地址}
}
  • nginx同时启用https。客户端 -> nginx(https) -> 服务端(SSL)
server {listen 443 ssl http2;ssl_certificate ssl/test.pem;ssl_certificate_key ssl/test.key;grpc_ssl_verify off;grpc_ssl_session_reuser on;location / {grpc_pass grpcs://192.168.0.14:84;}
}
  • 负载均衡配置
upstream grpc_backend {server 192.168.0.11:8001;server 192.168.0.12:8001;
}
server {listen 80 http2;location / {grpc_pass grpc://grpc_backend;}
}

配置指令

名称语法默认值说明
grpc_bindaddress [transparent] 或offnil设置从指定的本地IP地址及端口进行反向代理。设置transparent时,将客户端真实IP透传给后端。
grpc_buffer_sizesize4k或8k设用于从grpc服务器读取响应数据缓冲区大小。
grpc_passaddressnil后端grpc的地址
grpc_hide_headerfieldnil指定grpc后端响应数据中,不向客户端传递的http头
grpc_pass_headerfieldnil允许部分后端请求头返回给客户端
grpc_ignore_headersfieldsnil设置禁止nginx处理从后端获取响应的header
grpc_set_headerfield value在转发给grpc后端前,修改或添加请求头
grpc_connect_timeouttime60snginx与后端建立连接的超时时间
grpc_read_timeouttime60s从后端连续接收两个读操作之间的超时时间
grpc_send_timeouttime60s从后端连续接收两个写操作之间的超时时间
grpc_socket_keepaliveon 或 offoff启用nginx与后端的tcp keepalive机制
grpc_intercept_errorson 或 offoff启用拦截后端响应码大于或等于300的结果
grpc_next_upstream当出现指令之中指定的条件时,将未返回响应的请求传递给upstream中的另一个后端
grpc_next_upstream_timeouttime0next_upstream过程中的超时时间
grpc_next_upstream_triesnumber0next_upstream中下一个后端的尝试次数
grpc_ssl_protocols指定nginx与后端建立ssl连接的ssl协议的版本
grpc_ssl_session_reuseon 或 offon启用与后端https连接的ssl会话复用功能
grpc_ssl_ciphers设置建立https连接时用于协商使用的加密算法组合
grpc_ssl_server_nameon或offoff在与grpc服务器建立ssl连接时,设置是否启用通过SNI或RFC6066传递主机名
grpc_ssl_certificatefilenil指定后端对nginx的ssl证书文件
grpc_ssl_certificate_keyfilenil指定后端对nginx的ssl私钥文件
grpc_ssl_password_filefilenil指定后端对nginx的ssl密码文件
grpc_ssl_verifyon 或 offoff设置是否启用对grpc后端的ssl证书验证机制
grpc_ssl_namenameproxy_pass指令指定的主机名指定对后端ssl证书验证的主机名
grpc_ssl_crlfilenil证书吊销列表文件
grpc_ssl_trusted_certificatefilenil指定一个pem格式的ca证书文件
grpc_ssl_verify_depthnumber1设置证书链的验证深度
http://www.xdnf.cn/news/1035343.html

相关文章:

  • 人工智能学习21-Pandas-pivot_table
  • YOLOv2 中非极大值抑制(NMS)机制详解与实现
  • 第11次课 深搜1 A
  • 推理智能体RAG
  • 在 Linux 系统中使用 `sudo su`切换超级管理员不用提示密码验证的配置方法
  • 【北京迅为】iTOP-4412精英版使用手册-第二十二章 时间函数专题
  • Phthon3 学习记录-0613
  • leetcode2-两数相加
  • pycharm 2025.1.1-专业版jupyter notebook远程连接
  • 汇编语言学习(四)——汇编语言程序
  • 微信小程序使用图片实现红包雨功能
  • 算法专题八: 链表
  • scanf 读取字符串
  • 本地密码生成管理工具,自定义生成密码
  • Vue3组件生成唯一标识符方法
  • 16.vue.js watch()和watchEffect()的对比?(追踪依赖)(3)
  • 华为OD机考-货币单位换算-字符串(JAVA 2025B卷)
  • CMake 构建系统概述
  • LeetCode - 153. 寻找旋转排序数组中的最小值
  • Hive SQL执行流程深度解析:从CLI入口到执行计划生成
  • 计网复习知识(16)传输层及其协议功能
  • 贝塞尔曲线:优雅的数学艺术
  • C# 解析 URL URI 中的参数
  • OpenWrt | 解决NTFS格式的硬盘意外断电之后无法再次挂载的问题
  • 轻量免安装 透明背景图标一键提取,系统文件图标随取随用
  • NGINX 四层共享内存区同步模块实战 `ngx_stream_zone_sync_module`
  • qml显示svg矢量图形
  • FreeRTOS的低功耗Tickless模式
  • RLHF调参实战手册:实用Trick、现象排查与解决思路(持续更新)
  • 动态BGP服务器的用途都有什么?