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。至此,我们也成功实现了负载均衡。
相关推荐
广州灵眸科技有限公司20 分钟前
4G 模组开机自连 systemd 服务方案:基于灵眸科技EAI1106--Core-T
运维·服务器·科技
天远数科2 小时前
零信任架构实战:基于天远企业股权变更构建自动化商业银行对公授信存续期股权异动与资产抽逃预警网关
运维·人工智能·架构·自动化
qq_401700412 小时前
Linux设备树详解
linux·运维·服务器
奇树谦2 小时前
Windows CMD 下 mc 运维指南:SeaweedFS 安装验收与 MinIO 数据迁移
运维·windows
刚入门的大一新生3 小时前
Linux-信号
linux·运维·服务器
车软学堂3 小时前
CANoe自动化:跑起第一个测试用例
运维·车载系统·自动化·汽车·测试用例
L0208244 小时前
Kubernetes Ingress|CNI 网络模型|Calico 网络策略|Pod 调度器完整实战教程
运维·网络·云原生·容器·kubernetes
考拉讲支付6 小时前
延迟分账 / 核销分账的技术实现方案:服务完成后再分钱,到底怎么设计?
大数据·运维·人工智能·微信小程序·小程序·系统架构
ADAI_Bowen7 小时前
写文章 - 知乎
大数据·运维·人工智能