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。至此,我们也成功实现了负载均衡。
相关推荐
阿杰技术9 分钟前
SillyTavern(酒馆)AI聊天:本地与云服务器部署全攻略
运维·服务器
网络与设备以及操作系统学习使用者15 分钟前
vi与vim在openEuler中的差异及应用
linux·运维·网络·学习·vim
ylscode32 分钟前
巨齿鲨突袭GitHub:5500余仓库沦陷,开源供应链安全防线再遭重创
运维·服务器·网络·安全·安全威胁分析
shy_snow41 分钟前
Nginx解决跨域问题
运维·nginx
c++逐梦人42 分钟前
epoll ET服务器(Reactor模式)
运维·服务器·php
牛奔1 小时前
codebuddy 桌面版 如何配置自己的模型
运维·服务器·开发语言·php
SilentSamsara1 小时前
日志与可观测性:logging 进阶配置与结构化日志实战
运维·开发语言·python·青少年编程
学困昇2 小时前
Linux IPC 详解:匿名管道、命名管道、共享内存与信号量
linux·运维·服务器·c语言·c++·人工智能
TYKJ0232 小时前
服务器带宽的"独享"和"共享"到底差在哪?从原理到实测讲清楚
运维·服务器·后端
%KT%3 小时前
Windows安装wsl2和docker desktop,部署qdrant向量数据库
运维·docker·容器