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配置文件修改如下
sh 复制代码
  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,那么访问目标服务器的概率就是均等的。
sh 复制代码
  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。至此,我们也成功实现了负载均衡。
相关推荐
Wnq100724 小时前
智能巡检机器人在化工企业的应用研究
运维·计算机视觉·机器人·智能硬件·deepseek
tf的测试笔记7 小时前
测试团队UI自动化实施方案
运维·自动化
TDD_06287 小时前
【运维】Centos硬盘满导致开机时处于加载状态无法开机解决办法
linux·运维·经验分享·centos
头孢头孢7 小时前
k8s常用总结
运维·后端·k8s
遇码7 小时前
单机快速部署开源、免费的分布式任务调度系统——DolphinScheduler
大数据·运维·分布式·开源·定时任务·dolphin·scheduler
爱编程的王小美8 小时前
Docker基础详解
运维·docker·容器
学习至死qaq8 小时前
windows字体在linux访问异常
linux·运维·服务器
IEVEl8 小时前
Centos7 安装 TDengine
运维·centos·时序数据库·tdengine
在野靡生.9 小时前
Ansible(4)—— Playbook
linux·运维·ansible
烨鹰9 小时前
戴尔电脑安装Ubuntu双系统
linux·运维·ubuntu