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。至此,我们也成功实现了负载均衡。
相关推荐
fuyongliang1235 小时前
nginx反向代理,负载均衡,tomcat的数据流向图篇解析
nginx·tomcat·负载均衡
tuokuac6 小时前
nginx配置前端请求转发到指定的后端ip
前端·tcp/ip·nginx
Mr. Cao code7 小时前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
wanhengidc8 小时前
云手机运行流畅,秒开不卡顿
运维·网络·科技·游戏·智能手机
笨小孩@GF 知行合一8 小时前
OSPF实验:外部路由引入
运维·网络·hcip·数通·ospf
asdfg12589639 小时前
为什么要在出口路由器router配置NAT与默认路由
运维·网络·计算机网络
bug攻城狮9 小时前
Skopeo 工具介绍与 CentOS 7 安装指南
linux·运维·centos
宇宙第一小趴菜9 小时前
08 修改自己的Centos的软件源
linux·运维·centos
bug攻城狮9 小时前
彻底禁用 CentOS 7.9 中 vi/vim 的滴滴声
linux·运维·服务器·centos·vim
苹果醋310 小时前
数据库索引设计:在 MongoDB 中创建高效索引的策略
java·运维·spring boot·mysql·nginx