Nginx实现反向代理和负载均衡

news2024/9/26 1:20:56

Nginx安装

  • 本文章主要介绍下,如何使用Nginx来实现反向代理和负载均衡,Nginx安装和基础知识,可参考我的这篇文章 Nginx安装。

Nginx实现反向代理

  • 实现反向代理需要准备两台Nginx服务器。一台Nginx服务器A,ip为 192.168.206.140,一台Nginx服务器B,ip为192.168.206.141。
  • 为了便于区分,我们先修改下Nginx服务器B的index.html页面,修改后启动Nginx,访问页面如下
    在这里插入图片描述
  • 然后,我们用Nginx服务器A来实现反向代理。Nginx服务器A上的nginx配置文件修改如下
  •   worker_processes  1;
      events {
          worker_connections  1024;
      }
      
      http {
          include       mime.types;
          default_type  application/octet-stream;
          sendfile        on;
          keepalive_timeout  65;
          
          # 设置反向代理
          upstream slave1.net{
      		server 192.168.206.141:80;
          }
      
          server {
              listen       80;
              server_name  localhost;
      
              location / {
              	# 设置代理
                  proxy_pass http://slave1.net;
              }
      
              error_page   500 502 503 504  /50x.html;
              location = /50x.html {
                  root   html;
              }
          }
      }
    
  • 在浏览器中访问Nginx服务器A时,会访问server模块的server_name,然后去找location,默认配置中,会去加载location中的html目录下index.html页面。配置反向代理后,就会根据slave1.net这个url去找upstream,找到之后就会去访问upstream中对应的server地址。这里配置的是Nginx服务器B的地址,那么就会去访问Nginx服务器B。
  • 看下效果,在浏览器中输入Nginx服务器A的地址,会访问到Nginx服务器B。成功实现了反向代理。
    在这里插入图片描述

Nginx实现负载均衡

  • 实现负载均衡至少需要3台Nginx服务器,我们再加一台Nginx服务器C,ip为192.168.206.142。负载均衡是在反向代理的基础上实现的。
  • 同理为了便于区分,我们修改下Nginx服务器C的html页面,修改后如下
    在这里插入图片描述
  • Nginx服务器A的配置文件做以下修改,和设置反向代理的配置基本一致,只不过需要在upstream模块中再配置一台Nginx服务器,再去设置下权重weight,即访问目标服务器的频率,该值最小为1,无上限。如果不设置weight,那么访问目标服务器的概率就是均等的。
  •   worker_processes  1;
      events {
          worker_connections  1024;
      }
      
      http {
          include       mime.types;
          default_type  application/octet-stream;
          sendfile        on;
          keepalive_timeout  65;
          
          upstream slave1.net{
      		server 192.168.206.141:80 weight=2;
      		server 192.168.206.142:80 weight=1;
          }
      
          server {
              listen       80;
              server_name  localhost;
      
              location / {
              	# 设置代理
                  proxy_pass http://slave1.net;
              }
      
              error_page   500 502 503 504  /50x.html;
              location = /50x.html {
                  root   html;
              }
          }
      }
    
  • 配置完成后,重新加载配置。然后在浏览器中访问Nginx服务器A
    在这里插入图片描述
    在这里插入图片描述
  • 实测可以发现,访问3次Nginx服务器A,有两次会代理到Nginx服务器B,有一次会代理到Nginx服务器C。至此,我们也成功实现了负载均衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/809704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下查找python路径

本地目前装了几个版本的python,这里记录下查找python路径的方法。 1:whereis命令 whereis python2:which命令 which python与whereis相似,但which会返回第一个找到的执行文件的位置。 3:find命令 find命令可以搜索系…

Power BI-云端报表定时刷新--ODBC、MySQL、Oracle等其他本地数据源的刷新(二)

ODBC数据源 一些小众的数据源无法直接连接,需要通过微软系统自带的应用“ODBC数据源”连接。 1.首次使用应安装对应数据库的ODBC驱动程序,Mysql的ODBC驱动需要手动安装 2.在web服务中进行数据源的配置 Mysql数据源 1.Powerbi与Gateway第一次连SQL…

❤️创意网页:创意视觉效果粒子循环的网页动画

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…

【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

【嵌入式Linux项目】基于Linux的全志H616开发板智能家居项目(语音控制、人脸识别、安卓APP和PC端QT客户端远程操控)有视频功能展示

目录 一、功能需求 二、开发环境 1、硬件: 2、软件: 3、引脚分配: 三、关键点 1、设计模式之工厂模式 2、wiringPi库下的相关硬件操作函数调用 3、语音模块的串口通信 4、线程 5、摄像头的实时监控和拍照功能 6、人脸识别 四、编…

❤️创意网页:炫酷的网页 - 创造华丽粒子动画

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…

操作系统攻击:早期WindowsMS10-046漏洞

目录 概述 漏洞成因 利用过程 漏洞复现 漏洞修复 概述 本次介绍早期的windows高危漏洞——MS10_046_SHORTCUT_ICON_DLLLOADER , 该漏洞可以通过浏览器跳转网络资源的方式利用,结合xss攻击用户的系统 危险性极高。 漏洞成因 漏洞成因: m…

param.grad、requires_grad、grad_fn、grad/梯度为None?

基本概念 1)is_leaf 叶子节点和非叶子节点的区别:计算图中的节点分为叶子节点和非叶子节点,叶子节点可以理解成没有其他tensor再利用它进行计算(例如b a1,那么b需要a进行计算,那么a就不是叶子结点&…

服务器介绍

本文章转载与b战up主谈三国圈,仅用于学习讨论,如有侵权,请联系博主 机架型服务器 堆出同时服务百万人次机组 刀型服务器 服务器炸了 比如用户访问量暴增 超过机组的峰值处理能力,进而导致卡顿或炸服, 适合企业的塔式…

xilinx FPGA 除法器ip核(divider)的使用(VHDLVivado)

一、创建除法ip核 vivado的除法器ip核有三种类型,跟ISE相比多了一个LuMult类型,总结来说就是 LuMult:使用了DSP切片、块RAM和少量的FPGA逻辑原语(寄存器和lut),所以和Radix2相比占用fpga资源更少&#xff…

CS_SAVEBITS 这个样式有什么作用?

简单来说,如果你在创建窗口的时候在窗口类中指定了 CS_SAVEBITS 标志,则窗口管理器会尝试保存此窗口所遮盖的区域的位图数据。 但是,这里比较关键的问题是:为什么要这样做?只有明白了这其中的原理,你才会在…

2023.07.13力扣6题

931. 下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位…

Python批量将Excel内指定列的数据向上移动一行

本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,对其中的每一个文件加以操作——将其中指定的若干列的数据部分都向上移动一行,并将所有操作完毕的Excel表格文件中的数据加以合并,生成一个新的Excel文件的方法。 首…

走进Linux世界【七、Linux网络及快照和克隆】

Linux系统学习 走进Linux世界【一、Linux概述】 走进Linux世界【二、VM与Linux安装】 走进Linux世界【三、Linux文件与路径】 走进Linux世界【四、Linux基本命令一】 走进Linux世界【五、Linux基本命令二】 走进Linux世界【六、Linux编辑器vim】 走进Linux世界【七、Lin…

Nest grpc 实践之调用 python ddddocr 库

我曾经写过一个项目 ddddocr_server,使用 fastapi 提供 http 接口,以此来调用 ddddocr 库。 其他语言想要调用的话,则是通过 http 协议的方式来调用。然而 http 协议的开销不小,而 Websocket 调用又不灵活,此时针对这…

【计网】TCP在可靠传输中都干了啥

文章目录 1、概述2、校验和3、序列号和确认应答机制4、重传机制4.1、介绍4.2、超时重传4.3、快速重传 5、滑动窗口协议5.1、介绍5.2、发送方的滑动窗口5.3、接收方的滑动窗口 6、流量控制7、拥塞控制7.1、介绍7.2、慢开始7.3、拥塞避免7.4、快重传和快恢复 1、概述 TCP 是面向…

Day45 算法记录| 动态规划 12

股票问题 309. 买卖股票的最佳时机含冷冻期714.买卖股票的最佳时机含手续费 309. 买卖股票的最佳时机含冷冻期 这个视频讲解的很好 309.最佳买卖股票时机含冷冻期 class Solution {public int maxProfit(int[] prices) {int day prices.length;int [][] dp new int[day][2…

【雕爷学编程】MicroPython动手做(14)——掌控板之OLED屏幕

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

IOS UICollectionView 设置cell大小不生效问题

代码设置flowLayout.itemSize 单元格并没有改变布局大小, 解决办法如下图:把View flow layout 的estimate size 设置为None,上面设置的itemSize 生效了。

【Spring Boot】实战:实现优雅的数据返回

实战:实现优雅的数据返回 本节介绍如何让前后台优雅地进行数据交互,正常的数据如何统一数据格式,以及异常情况如何统一处理并返回统一格式的数据。 1.为什么要统一返回值 在项目开发过程中经常会涉及服务端、客户端接口数据传输或前后台分…