首页 > 系统相关 >[nginx]反向代理grpc

[nginx]反向代理grpc

时间:2023-07-23 18:11:59浏览次数:42  
标签:off nil ssl grpc server nginx 反向

前言

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_bind address [transparent] 或off nil 设置从指定的本地IP地址及端口进行反向代理。设置transparent时,将客户端真实IP透传给后端。
grpc_buffer_size size 4k或8k 设用于从grpc服务器读取响应数据缓冲区大小。
grpc_pass address nil 后端grpc的地址
grpc_hide_header field nil 指定grpc后端响应数据中,不向客户端传递的http头
grpc_pass_header field nil 允许部分后端请求头返回给客户端
grpc_ignore_headers fields nil 设置禁止nginx处理从后端获取响应的header
grpc_set_header field value 在转发给grpc后端前,修改或添加请求头
grpc_connect_timeout time 60s nginx与后端建立连接的超时时间
grpc_read_timeout time 60s 从后端连续接收两个读操作之间的超时时间
grpc_send_timeout time 60s 从后端连续接收两个写操作之间的超时时间
grpc_socket_keepalive on 或 off off 启用nginx与后端的tcp keepalive机制
grpc_intercept_errors on 或 off off 启用拦截后端响应码大于或等于300的结果
grpc_next_upstream 当出现指令之中指定的条件时,将未返回响应的请求传递给upstream中的另一个后端
grpc_next_upstream_timeout time 0 next_upstream过程中的超时时间
grpc_next_upstream_tries number 0 next_upstream中下一个后端的尝试次数
grpc_ssl_protocols 指定nginx与后端建立ssl连接的ssl协议的版本
grpc_ssl_session_reuse on 或 off on 启用与后端https连接的ssl会话复用功能
grpc_ssl_ciphers 设置建立https连接时用于协商使用的加密算法组合
grpc_ssl_server_name on或off off 在与grpc服务器建立ssl连接时,设置是否启用通过SNI或RFC6066传递主机名
grpc_ssl_certificate file nil 指定后端对nginx的ssl证书文件
grpc_ssl_certificate_key file nil 指定后端对nginx的ssl私钥文件
grpc_ssl_password_file file nil 指定后端对nginx的ssl密码文件
grpc_ssl_verify on 或 off off 设置是否启用对grpc后端的ssl证书验证机制
grpc_ssl_name name proxy_pass指令指定的主机名 指定对后端ssl证书验证的主机名
grpc_ssl_crl file nil 证书吊销列表文件
grpc_ssl_trusted_certificate file nil 指定一个pem格式的ca证书文件
grpc_ssl_verify_depth number 1 设置证书链的验证深度

参考

标签:off,nil,ssl,grpc,server,nginx,反向
From: https://www.cnblogs.com/XY-Heruo/p/17575356.html

相关文章

  • nginx+tomcat部署均衡+虚拟IP配置
    一、配置java环境更新数据源sudoaptupdate安装javasudoaptinstallopenjdk-java-8-jdk查看是否安装成功java-version二、Tomcat配置​ 直接访问tomcat官网(http://tomcat.apache.org/),下载需要的版本,我这里选择apache-tomcat-8.5.90版本操作如下:#安装需求的tomc......
  • hibernate反向工程生成的实体类就不能正确放在指定的包路径下
    hibernate反向工程生成的实体类就不能正确放在指定的包路径下  描述:使用hibernate反向工程生成实体类时,类文件可以正确生成在src的一级目录下但在二级或多级目录时就会生成在src的默认包下.例如:表User,它有俩个字段username和password.在src下的一级目录为hibernate,存放User......
  • k8s 学习笔记之搭建 nginx 服务测试搭建的环境
    服务部署接下来在kubernetes集群中部署一个nginx基础程序,测试集群是否正常工作。#部署nginx[root@master~]#kubectlcreatedeploymentnginx--image=nginx:1.14-alpine#暴露端口[root@master~]#kubectlexposedeploymentnginx--port=80--type=NodePort#......
  • centos 6.2 64位安装nginx php mysql
    平台环境http://jiyunjie.blog.51cto.com/5348020/946860centos6.264位nginx-1.2.1php-5.3.14mysql-5.5.25阿里云2g内存实例,具体参数调整根据自己主机调整里面也提到一部分修改建议32位centos512内存参考http://jiyunjie.blog.51cto.com/5348020/907534 一、阿里云主机默认......
  • 第六节:Nginx常用案例(反盗链、限速、黑名单、跨域等等)
     三.常用场景1. 防盗链直接输入地址,没有referer字段,所以匹配了后面的none或blocked,不跳转。通过搜索引擎打开的含有referer字段,走后面的匹配规则。 none代表没有refererblocked代表有referer,但是被防火墙或代理给去除了。配置如下:worker_processes1;even......
  • 制作nginx docker镜像
    制作NGINXDocker镜像流程1.准备工作在开始制作NGINXDocker镜像之前,我们需要确保已经满足以下条件:安装Docker:在主机上安装好Docker,确保可以正常运行。准备NGINX配置文件:将NGINX的配置文件放置在一个目录中,后续会将其复制到Docker镜像中。2.创建DockerfileDockerfile是用......
  • Python监控Nginx 4、7层健康检查
    [root@acs-hk-ctos7-prod-01scripts]#catupstrem.py#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2023/6/2517:18#@File:nginx_upstram.py#@Software:PyCharmimportrequestsfromurllib.requestimporturlopenimportos,socket,datetim......
  • Pytorch 反向计算图
    PyTorch反向计算图介绍PyTorch是一个基于Python的科学计算库,它提供了强大的功能来构建深度学习模型。其中,反向计算图是PyTorch的一个重要特性,它使得我们能够自动计算梯度并进行反向传播,从而优化我们的模型。在本文中,我们将详细介绍PyTorch的反向计算图机制,并提供一个简单的代码......
  • gRPC如何保障数据安全传输
    什么是gRPC?gRPC是由Google开发的高性能、开源的RPC(RemoteProcedureCall)框架,用于在客户端和服务器之间进行通信。它基于ProtocolBuffers(protobuf)进行消息序列化和反序列化,支持多种通信协议,如HTTP/2、TCP和gRPC提供的协议。gRPC的安全需求在现代网络环境中,数据的安......
  • Nginx常用配置
    一、基础配置userroot;worker_processes1;events{worker_connections10240;}http{log_format'$remote_addr-$remote_user[$time_local]''"$request"$......