当前位置: 首页 > news >正文

Nginx反向代理与负载均衡

一.Nginx方向代理

1.概述

代理分为两类,正向代理和反向代理。

正向代理:帮助用户访问服务器,缓存服务器内容。

反向代理:代理服务器处理用户的请求,决定转发请求给谁处理负载均衡的作用。

2.实现反向代理实验

nginx可以代理七层(应用层)和四层(网络层),代理七层代理比四层代理看到的东西多功能强大,可以看到真实数据。

使用模块: proxy_pass   反向代理的服务器地址或域名;

(1)实验拓扑

(2)实验目的

由pc2代理服务器,代理服务端pc3处理用户pc1的请求

(3)实验过程

①首先准备三台虚拟机且关闭防火墙和selinux,其中pc2和pc3安装nginx。
pc2、pc3执行:
yum  install   epel-release -y 
yum  install   nginx  -y 
#安装nginx
②pc2和pc3上创建子配置文件test.conf
pc2、pc3执行:
cd /etc/nginx/conf.d/
touch test.conf
#进入子配置文件目录创建子配置文件
③服务端pc3子配置文件内容
server {
    root /etc/nginx/html;
#指定虚拟主机根目录
}
④创建服务端pc3虚拟主机的根目录,并写默认内容为this is pc3在index.html中
mkdir  -p /etc/nginx/html;
echo "this is pc3">/etc/nginx/html/index.html
#递归创建文件夹并设置默认主页内容
⑤反向代理服务器pc2的配置文件内容:
server {
    listen 80;
#监听所有80端口
    server_name www.lhj.com;
#创建虚拟主机www.lhj.com
location /{
proxy_pass http://192.168.30.13
#访问反代的虚拟主机www.lhj.com则由192.168.30.13处理请求
}    
}
⑥代理服务和服务端开启nginx服务,并在pc1客户端添加www.lhj.com的对应hosts文件进行测试
pc2、pc3执行:
systemctl start nginx 
pc1执行:
sed -i '1a\192.168.30.12 www.lhj.com' /etc/hosts  
#在/etc/hosts文件的第一行添加192.168.30.12 www.lhj.com内容
curl  www.lhj.com
#访问反向代理服务器
得到内容
this is  pc3

二.负载均衡

nginx反向代理负载均衡中用的是upstream模块,应用于http模块中,目的为可为所有server模块提供服务,默认算法为轮询。

使用格式:

upstream    name(反代名称){

server   后端服务器地址   [算法]  [其他配置] ;

}

1.反向代理负载均衡调度算法

(1)轮询

#默认算法是轮询算法即反向代理服务器处理用户请求时,每个后端服务器都轮流给。

upstream   lhj{   server         http://192.168.227.100;

                  server         http://192.168.227.101;

}

(2)加权轮询算法

#在默认轮询的基础上增加权重,weight=number。如果后端有2个服务器其中一个配置权重为weight=3另外一个不配置默认是1,则有用户访问时分配给给有权重的服务器和不配置权重的服务器的比例为3:1。

upstream   lhj{   server         http://192.168.227.100        weight=3;

                  server         http://192.168.227.101;

}

(3)最小连接数算法

#按照nginx反向代理服务器和后端服务器的连接数分配请求,连接越少的分配处理请求优先级越高。例如若最小连接数(least_conn;)是设置是3,后端服务器1有2个请求在处理,而后端服务器2只有一个请求在处理则新请求交给后端服务器2。

upstream   lhj{    least_conn;

                          server         http://192.168.227.100;

                          server         http://192.168.227.101;

}

(4)IP、url 哈希算法

每个请求按访问ip或者url的hash结果分配,这样每个访客固定访问一个后端服务器,不需要知道是如何计算的,只要了解会固定访问一个后端服务器即可。

(5)响应时间fair算法

需要解读nginx第三方模块ngx_http_upstream_fair_module实现,配置时max_fails=number为后端服务器配置,默认单位为秒,按照响应时间来处理请求,响应时间越短越优先分配

2.反向代理负载均衡实验

1.实验目的

用户pc1访问代理服务的www.6.com虚拟主机域名时,若由服务端pc3服务器处理则返回this is pc3若由服务端pc4服务器处理则返回this is pc4 用nginx反向代理实现负载均衡。

①首先准备四台虚拟机且关闭防火墙和selinux,其中pc2、pc3、pc4安装nginx。
pc2、pc3、pc4执行:
yum  install   epel-release -y 
yum  install   nginx  -y 
#安装nginx
②pc2、pc3、pc4上创建子配置文件test.conf
pc2、pc3、pc4执行:
cd /etc/nginx/conf.d/
touch test.conf
#进入子配置文件目录创建子配置文件
③服务端pc3子配置文件内容
server {
    root /etc/nginx/html;
#指定虚拟主机根目录
}
④创建服务端pc3虚拟主机的根目录,并写默认内容为this is pc3在index.html中
mkdir  -p /etc/nginx/html;
echo "this is pc3">/etc/nginx/html/index.html
#递归创建文件夹并设置默认主页内容
⑤服务端pc4子配置文件内容
server {
    root /etc/nginx/html;
#指定虚拟主机根目录
}
⑥服务端pc4子配置文件内容
server {
    root /etc/nginx/html;
#指定虚拟主机根目录
}
⑦创建服务端pc4虚拟主机的根目录,并写默认内容为this is pc4在index.html中
mkdir  -p /etc/nginx/html;
echo "this is pc4">/etc/nginx/html/index.html
⑧反向代理服务器pc2的主配置文件和子配置文件修改:
主配置文件内容修改:
vim /etc/nginx/nginx.conf
#打开主配置文件,在主配置文件的http模块中添加内容如下:
upstream  6 {
#创建名字为6的方向代理负载均衡
    server 192.168.227.102;
#服务端pc3地址
    server 192.168.227.103;
#服务端pc4地址
}
#子配置文件test.conf内容:
server {
    listen 80;
#监听所有80端口
    server_name www.6.com;
#创建虚拟主机www.6.com
location /{
proxy_pass http://6;
#访问反代的虚拟主机www.6.com则由反向代理负载均衡6来处理请求
}    
}
⑨代理服务和服务端开启nginx服务,并在pc1客户端添加www.6.com的对应hosts文件进行测试
pc2、pc3、pc4执行:
systemctl start nginx 
pc1执行:
sed -i '1a\192.168.227.101 www.6.com' /etc/hosts  
#在/etc/hosts文件的第一行添加192.168.227.101 www.6.com内容
curl  www.6.com
#多次使用访问反向代理服务器
得到内容
this is  pc3
this is  pc4的比例大概为1:1

相关文章:

  • Topaz Video AI:一键提升视频品质,智能重塑影像魅力 mac/win版
  • (3)(3.2) MAVLink2数据包签名(安全)
  • SprinBoot集成nacos
  • Unity 轮转图, 惯性, 自动回正, 点击选择
  • 每日学习总结20240301
  • Java11之后的jdk到底要不要生成jre目录?
  • 代码随想录算法训练营番外 刷题日记0301 || 29、两数相除,31、下一个排列
  • 第二代Spring Cloud Alibaba主流时代
  • 一周学会Django5 Python Web开发-Django5详细视图DetailView
  • 11. Nginx进阶-HTTPS
  • ⭐每天一道leetcode:27.移除元素(简单;vector)
  • 批量下载抖音视频|抖音数据挖掘软件
  • hive 中少量数据验证函数的方法-stack
  • Android m/mm/mmm/make编译模块
  • Linux入门到入土
  • c++面试三 -- 智能指针--7000字
  • 黑客技术(网络安全)自学2024
  • 运维随录实战(5)之centos搭建jenkins
  • Linux网络TCP和UDP协议解析
  • 在CentOS上使用Gunicorn和systemd完整部署Flask应用:详细指南
  • 官方披露:临汾昔日“明星官员”宿青平已于去年落马
  • 国铁集团:一季度全国海铁运输商品车同比增长33.62%
  • 专访|白俄罗斯共产党中央第一书记瑟兰科夫:只有大家联合起来,才能有效应对当前危机所带来的冲击
  • 政企研合力,科学监测分析服务消费
  • 影子调查丨掉落的喷淋头:太原一7天酒店加盟店消防设施造假迷局
  • 银行板块整体走强,工行、农行、中行股价再创新高