Nginx 各种反向代理方式

2023-11-10

代理 http

本次实验后端为 geoserver
如下就可以实现基础的http反向代理

  server {
        listen       80;
        server_name  192.168.144.100;
        location / {
            proxy_pass http://192.168.144.101:8080;
            add_header backendIP $upstream_addr;
	        add_header backendCode $upstream_status;
	         proxy_set_header    Host $http_host;
	        proxy_set_header   X-Real-IP $remote_addr;
	         proxy_set_header    REMOTE-HOST $remote_addr;
	        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
	         proxy_set_header    X-Forwarded-Host $Server_name;
	         proxy_connect_timeout 30s;
	         proxy_read_timeout 60s;
	         proxy_send_timeout 60s;
	         proxy_buffering off;
            
      
        }

通过页面访问192.168.144.100/geoserver
在这里插入图片描述

实现负载均衡

后端两个geoserver 服务器
配置:

    upstream geoserver {
      ip_hash;
      server 192.168.144.101:8080;
      server 192.168.144.103:8080;
}
    server {
        listen       80;
        server_name  192.168.144.100;
        location / {
            proxy_pass http://geoserver;
			client_max_body_size 500m; 
			 add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
			 add_header Access-Control-Allow-Headers X-Requested-With;
			add_header backendIP $upstream_addr;
			add_header backendCode $upstream_status;
			proxy_set_header    Host $http_host;
			 proxy_set_header   X-Real-IP $remote_addr;
			proxy_set_header    REMOTE-HOST $remote_addr;
			proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header    X-Forwarded-Host $Server_name;
			proxy_connect_timeout 30s;
			 proxy_read_timeout 60s;
			 proxy_send_timeout 60s;
			proxy_buffering off;
        }
}

nginx 代理 https

https 由Nginx 中-with-http_ssl_module 模块提供
检查nginx 安装的模块信息可以执行 nginx 脚本-V 选项查看

[root@localhost sbin]# ./nginx -V

在这里插入图片描述
创建自建证书

在nginx 安装目录下创建一个ssl目录
[root@localhost ~]# mkdir  /usr/local/nginx/ssl
在ssl目录里执行下面命令创建自签名证书
[root@localhost ssl]#openssl  genrsa -out ca.key 2048
[root@localhost ssl]#openssl  req -new  -x509 -key  ca.key  -out server.crt  -days 3650

添加相关代码如下

server {
    listen      443 ssl;
    server_name 192.168.144.102;
    ssl_certificate /usr/local/nginx/ssl/server.crt;
    ssl_certificate_key /usr/local/nginx/ssl/ca.key;
    location / {
        proxy_pass https://192.168.144.101:443;
        client_max_body_size 500m;
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
         add_header Access-Control-Allow-Headers X-Requested-With;
        add_header backendIP $upstream_addr;
        add_header backendCode $upstream_status;
        proxy_set_header    Host $http_host;
         proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header    REMOTE-HOST $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Host $Server_name;
        proxy_connect_timeout 30s;
         proxy_read_timeout 60s;
         proxy_send_timeout 60s;
        proxy_buffering off;
        }

}

nginx 代理tcp

TCP 代理由–with-stream模块提供,使用tcpd代理需安装此模块
查看是否安装此模块

[root@localhost sbin]# ./nginx -V

在这里插入图片描述
没有的话,需要手动添加:按照下面平滑升级方式中的前6各步骤操作

详细配置如下

stream{
    upstream mysql{
    #这里代理mysql,其端口是3306
    server 10.0.0.7:3306;
    }
    server {
           #监听3306端口
           listen 3306;
           proxy_pass mysql;
     }
#####################################
upstream oracle{
    #这里代理oracle,其端口是1521
    server 10.0.0.7:1521;
    }
    server {
           #监听1521端口
           listen 1521;
           proxy_pass oracle;
     }

}

在这里插入图片描述

nginx 平滑升级

1,当前版本查看

[root@localhost sbin]# ./nginx -V

2,解压新版本安装包

tar -zxvf nginx-1.20.2.tar.gz

3,进入新版安装包文件

 cd nginx-1.20.2/

4,初始化 (若是添加新模块,可在后面追加模块名称)

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/tmp/error.log --http-log-path=/usr/local/nginx/tmp/access.log --pid-path=/usr/local/nginx/tmp/nginx.pid --lock-path=/usr/local/nginx/tmp/nginx.lock --with-http_ssl_module
5,编译,不要make install

 make

6,进入objs 目录

  cd objs/
  ./nginx -V

7 拷贝启动文件到老版本nginx的sbin目录下(将老版本的启动文件提前备份下)

  mv nginx /usr/local/nginx/sbin/

8 ,#检测一下有没有问题

[root@localhost sbin]# ./nginx -t

#USR2 平滑升级可执行程序,将存储有旧版本主进程ID的文件重命名为nginx.pid.oldbin,跟着启动新的
nginx
#此时两个master的进程都在运行,只是旧的master不在监听,由新的master监听80
#此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。

kill -USR2 `cat /usr/local/nginx/tmp/nginx.pid`
ps -auxf | grep nginx

#先关闭旧nginx的worker进程,而不关闭nginx主进程方便回滚
#向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理

kill -WINCH `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx

查看当前版本是否完成升级

curl -I 127.0.0.1

#经过一段时间测试,新版本服务没问题,最后退出老的master

kill -QUIT `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx 各种反向代理方式 的相关文章

随机推荐

  • PyTorch入门(三)PyTorch常用操作

    PyTorch常用操作 bilinear kernel bilinear kernel def bilinear kernel in channels out channels kernel size return a bilinear k
  • STM32——SysTick timer(STK)----系统定时器

    系统定时器是属于Cortex内核中的一个外设 所有Cortex M内核的单片机都有这个定时器 Systick定时器常用来做延时 或者实时系统的心跳时钟 这样可以节省MCU资源 不用浪费一个定时器 它是一个24位 向下递减的计数器 由以下四个
  • elastic-job 执行原理

    Elastic Job执行原理 1 如果只有一个分片的情况下 就是和原生的quartz一样的 就是所有的任务都在一台机器上面执行 2 如果有两个分片的情况下 然后5个job在两台机器上面执行 机器 machine1 machine2 job
  • 1896-2021历届奥运会奖牌榜动态排序(Matplotlib图表动画)

    摘 要 在制作动态排序动画之前 我们看一下数据的整理情况 a 对第1 种大部分数据的情况 先爬取下来 输出到excel 1 b 对第2 种小部分数据的情况 也先爬取下来 输出到另一个excel 2 c 对第3 种个别的 还有第31 32届的
  • 合适新手入门的串口屏学习分享

    串口屏学习分享 一 串口屏简单介绍 二 编辑界面的详细介绍 三 实战演练 制作串口屏键盘 1 准备工作 2 开始 四 总结 一 串口屏简单介绍 串口是我们在学习编程 学习单片机时经常需要的 本人就是在学习32单片机时需要用到 所以才深入了解
  • 计算机怎么消除用户密码,电脑开机设置了密码要怎么删除

    很多人的电脑都设置了开机密码 但每次开机都要输入也会觉得麻烦 怎么删除开机密码呢 下面由小编为大家整理了的方法步骤 希望对大家有帮助 电脑删除开机密码的方法和步骤如下 一 如果记得自己设置的密码 进行以下操作 1打开 我的电脑 在左则找到
  • Android常见的分辨率

    1 1 手机常见分辨率 4 3 VGA 640 480 Video Graphics Array QVGA 320 240 Quarter VGA HVGA 480 320 Half size VGA SVGA 800 600 Super
  • 线段检测M-LSD 已开源

    其中 M LSD tiny最快能以56 8FPS和48 6FPS的速度在手机上实时运行 没错 现在AI在手机上给家具直线描边的速度 可能比你还快 网页版在线demo 为了方便效果展示 作者们还推出了一个网页版demo 基于Python的fl
  • unity安卓平台多摄像机显示黑屏问题

    问题 用Unity2019 2 0打包安卓平台的项目 在多摄像机显示的时候 老是会只渲染最顶层的摄像机 低渲染层级的摄像机不显示 解决方案 我先升级了Android SDK的版本 API版本升级到了29 然后把项目打包质量降低 然后打包 摄
  • openssl安装与使用

    文章目录 1 OpenSSL简介 2 OpenSSL安装 3 加密技术介绍 4 openssl 命令 4 1摘要命令 4 2对称加密命令 4 3非对称加密命令 4 3 1生成私钥 4 3 2提取公钥 4 3 3利用公钥加密 私钥解密数据 4
  • ECCV 2020《Linguistic Structure Guided Context Modeling for Referring Image Segmentation》论文笔记

    目录 简介 动机 贡献 方法 实验 简介 本文出自北航刘偲老师colab 使用语言结构引导上下文建模 用于Referring Image Segmentation 下载链接 动机 解决Referring Image Segmentation
  • docker-compose 运行hadoop

    参考网址 https github com big data europe docker hadoop 下载hadoop镜像 可以在github上自己手动构建hadoop镜像 也可以从dockerhup上下载 dockerhup上已经与该g
  • C语言注释风格(函数、功能、输入、输出、返回)

    C语言编程规范 注释 规则 1 一般情况下 源程序有效注释量必须在20 以上 说明 注释的原则是有助于对程序的阅读理解 在该加的地方都加了 注释不宜太多也不能太少 注释语言必须准确 易懂 简洁 2 说明性文件 如头文件 h文件 inc文件
  • yolov5 FPN 与 PAN的结构与作用

    在卷积神经网络过程中 网络层数越深 目标的特征信息就越强 模型对目标的预测就更好 但同时也会使得目标的位置信息越来越弱 并且在不断的卷积过程中 对小目标的信息容易造成损失 因此 需要进行不同尺度的预测 YOLOv5 采用 FPN 和 PAN
  • adamax参数_Adamax优化器

    Adamax是Adam的一种变体 此方法对学习率的上限提供了一个更简单的范围 更多详细的基本内容 请参照词条Adam 在Adam中 单个权重的更新规则是将其梯度与当前和过去梯度的L 2范数 标量 成反比例缩放 而作者又将基于L 2范数的更新
  • Linux提权备忘录

    如果不是因为真的喜欢你 我纠缠你干嘛 我又何必那么卑微 那么不堪 甚至不停修改自己的底线 到最后变得一文不值 网易云热评 一 判断是否为虚拟机 cat proc scsi scsi dmesg grep i vir w who 查询目前登录
  • Webpack5资源配置(三)

    总述 wepack资源配置了四类资源加载除了js以外的配置资源 分别为asset recource资源 asset inline资源 asset source资源 asset通用资源类型 接下来 将配合前期webpack学习 系统的对以上四
  • MEMCACHE未授权访问漏洞利用及修复

    memcache是国外社区网站Live Journal的开发团队开发的高性能的分布式内存缓存服务器 一般的使用目的是 通过缓存数据库查询结果 减少数据库访问次数 以提高动态Web应用的速度 提高扩展性 memcache的默认端口是11211
  • LeeCode精选100题-【两数相加】-1

    这里写自定义目录标题 题干 思路 1 暴力枚举 这种没啥好说的 直接双层循环就可以 时间复杂度为O n 2 空间复杂度为O n 2 借助HashMap 两数想相加 题干 给定一个整数数组 nums 和一个整数目标值 target 请你在该数
  • Nginx 各种反向代理方式

    Nginx 反向代理 代理 http 实现负载均衡 nginx 代理 https nginx 代理tcp nginx 平滑升级 代理 http 本次实验后端为 geoserver 如下就可以实现基础的http反向代理 server list