欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > [nginx]反向代理grpc

[nginx]反向代理grpc

2025/6/20 0:24:27 来源:https://blog.csdn.net/hie98894/article/details/148658382  浏览:    关键词:[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设置证书链的验证深度

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词