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

反向代理和负载均衡

反向代理和负载均衡

一、反向代理

nginx通常被用作后端服务器的反向代理,这样就可以很方便的实现动静分离以及负载均衡,从而大大提高服务器的处理能力。

nginx实现动静分离,其实就是在反向代理的时候,如果是静态资源,就直接从nginx发布的路径去读取,而不需要从后台服务器获取了。

但是要注意,这种情况下需要保证后端跟前端的程序保持一致,可以使用Rsync做服务端自动同步或者使用NFS、MFS分布式共享存储。

1.1 什么是代理?

说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;

此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程。

1.2 正向代理

我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家肯都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们。

这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

1.3 反向代理

多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色。

反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!

1.4 正反向代理结合

在实际生产项目中,大部分的就是正向代理和反向代理结合起来使用。

我们在实际项目操作时,正向代理和反向代理很有可能会存在在一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向代理服务器,反向代理了多台真实的业务处理服务器。

二、负载均衡

http proxy模块,功能很多,最常用的是proxy_pass和proxy_cache

如果要使用proxy_cache,需要集成第三方的ngx_cache_purge模块,用来清除指定的URL缓存。这个集成需要在安装nginx的时候去做

nginx通过upstream模块来实现简单的负载均衡,upstream需要定义在http段内。

2.1 nginx负载均衡的模式

1.轮询(默认):接收到的请求安装顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。

2.ip_hash:每个请求按照发起客户端的IP的hash结果进行匹配,这样的算法下一个固定IP地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

2.2 nginx负载均衡案例

环境说明:

主机IP安装系统
nginx192.168.100.10nginxCentOS-7
rs1192.168.100.20httpdCentOS-7
rs2192.168.100.30httpdCentOS-7
2.2.1 rs1和rs2主机部署好网页
# rs1yum -y install httpdecho RS1 > /var/www/html/index.htmlsystemctl restart httpdsystemctl enable httpd​# rs2yum -y install httpdecho RS2 > /var/www/html/index.htmlsystemctl restart httpdsystemctl enable httpd 
2.2.2 nginx配置负载均衡
vim /usr/local/nginx/conf/nginx.conf# 在http{}配置upstreamupstream webserver {server 192.168.100.20;server 192.168.100.30;server {listen       80;server_name  localhost;​location / {proxy_pass http://webserver;}​​nginx -s reload
2.2.3 测试访问
curl http://192.168.100.10

2.2.4 设置权重
vim /usr/local/nginx/conf/nginx.conf# 在http{}配置upstreamupstream webserver {server 192.168.100.20 weight=3;server 192.168.100.30;server {listen       80;server_name  localhost;​location / {proxy_pass http://webserver;}​​nginx -s reload

2.2.5 ip_hash配置
vim /usr/local/nginx/conf/nginx.conf# 在http{}配置upstreamupstream webserver {ip_hash;server 192.168.100.20;server 192.168.100.30;server {listen       80;server_name  localhost;​location / {proxy_pass http://webserver;}​​nginx -s reload

2.2.6 动静分离

增加一台主机:192.168.100.200 部署tomcat,网页内容为Hello World

vim /usr/local/nginx/conf/nginx.conf# 在http{}配置upstreamupstream webserver {        server 192.168.100.20;server 192.168.100.30;upstream tomcat {server 192.168.100.200:8080;}server {listen       80;server_name  localhost;​location / {proxy_pass http://webserver;}location /test {proxy_pass http://tomcat;}​​nginx -s reload

http://www.dtcms.com/a/457408.html

相关文章:

  • 水果网站设计论文网页传奇游戏中心
  • 兰州网站建设lst0931wordpress调用函数大全
  • JavaScript核心构成与基础语法详解1
  • Redission分布式锁、WatchDog续约、布隆过滤器
  • 《jQuery 捕获》
  • 【开题答辩全过程】以 阿歹果园养鸡场管理系统为例,包含答辩的问题和答案
  • 【数据结构】考研数据结构核心考点:二叉排序树(BST)全方位详解与代码实现
  • 河北做网站哪家公司好广州市网站建设公
  • AI学习日记——卷积神经网络(CNN):卷积层与池化层的概念
  • JavaScript中的axios
  • 我们提供的网站建设响应式网站 尺寸
  • Robotframework 并发执行
  • 兰州拼团网站建设网站建设知识点的总结
  • 做门窗的建网站怎么赚钱网页设计图片怎么变小
  • 第十六篇: 算法复杂度分析:大O表示法实战指南
  • 网站倍攻击wordpress 换行符
  • 【PyTorch】神经风格迁移
  • LabVIEW运行时快捷菜单创建
  • 用rp怎么做网站原型网站开发包括后台 前台
  • asp.net网站运行助手wordpress哪个php版本好
  • Python网络编程——TCP编程
  • 手机网站建站费用网站的死链
  • docker容器技术
  • 线程与进程理论知识入门
  • 从零搭建 RAG 智能问答系统2:实现chainlit个性化设计以及文件上传预览
  • AI智能体(Agent)大模型入门【11】--基于llamaindex框架和fastapi框架完善页面和大语言模型对话的一些扩展接口
  • Linux进程第六讲——深入理解fork系统调用(下)
  • 织梦网站模板免费网站ico制作
  • 邹城网站建设多少钱做的比较好看的网站
  • Python 运算符与列表(list)