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

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

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.lryc.cn/news/100538.html

相关文章:

  • 小米手机MIUI优化的影响
  • 【图论】kruskal算法
  • Django框架:使用channels实现websocket,配置和项目实际使用
  • 基于RK3588+FPGA+AI算法定制的智慧交通与智能安防解决方案
  • AI面试官:LINQ和Lambda表达式(一)
  • FPGA学习——FPGA利用状态机实现电子锁模拟
  • Bert经典变体学习
  • uniapp checkbox radio 样式修改
  • 电脑重启后VScode快捷方式失效,找不到Code.exe
  • C语言实现扫雷游戏
  • 蓝图节点编辑器
  • MySql 知识大汇总
  • 深入浅出Pytorch函数——torch.sum
  • Git克隆文件不显示绿色勾、红色感叹号等图标
  • SOC FPGA之HPS模型设计(一)
  • 解决openstack重启swift服务后报错
  • [Linux]进程控制详解!!(创建、终止、等待、替换)
  • 全面适配 | 走近openGauss数据库+鲲鹏欧拉操作系统
  • 2023Robocom CAIP省赛 第四题 相对论大师
  • 【TypeScript】TS入门级基础学习(一)
  • jenkins执行jmeter时,报Begin size 1 is not equal to fixed size 5
  • 在 “小小容器” WasmEdge 里运行小小羊驼 llama 2
  • 【C#】async和await 续
  • 【Matlab】基于粒子群优化算法优化BP神经网络的数据回归预测(Excel可直接替换数据)
  • QPainter绘制雷达界面
  • flutter:BottomNavigationBar和TabBar
  • 【图论】Prim算法
  • 第九十二回 在Flutter中解析JSON数据
  • 银河麒麟安装mysql数据库(mariadb)-银河麒麟安装JDK-银河麒麟安装nginx(附安装包)
  • 文件上传