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。至此,我们也成功实现了负载均衡。
相关推荐
s1kSec22 分钟前
天翼云openclaw钉钉配置解决,解决404、401报错
运维·服务器
以太浮标6 小时前
华为eNSP模拟器综合实验之- ACL控制列表核心命令全解析及场景应用
运维·网络·网络协议·华为·信息与通信
巨斧空间掌门7 小时前
JDK17 下载 windows Linux
linux·运维·服务器
小挪号底迪滴7 小时前
Docker容器化实战:从“在我机器上能跑“到环境一致性
运维·docker·容器
江畔何人初7 小时前
kube-apiserver、kube-proxy、Calico 关系
运维·服务器·网络·云原生·kubernetes
_下雨天.8 小时前
Nginx性能调优与深度监控
运维·nginx
皮卡蛋炒饭.8 小时前
进程得控制
linux·运维·服务器
weiwx838 小时前
Nginx location 和 proxy_pass 配置详解
服务器·网络·nginx
带娃的IT创业者10 小时前
WeClaw 日志分析实战:如何从海量日志中快速定位根因?
运维·python·websocket·jenkins·fastapi·架构设计·实时通信
杨云龙UP11 小时前
Oracle ASM磁盘组空间分配与冗余理解
linux·运维·数据库·sql·oracle