《HTTP权威指南》– 16.重定向与负载均衡
重定向
重定向 的目标是尽快地将HTTP报文发送到可用的Web服务器上去。在穿过因特网的路径上,HTTP报文传输的方向会受到HTTP应用程序和报文经由的路由设备的影响;
- 配置创建客户端报文的浏览器应用程序,使其将报文发送给代理服务器;
- DNS解析程序会选择用于报文寻址的IP程序,对不同物理地域的不同客户端来会说,这个IP地址可能不同;
- 报文经过网络传输时,会被划分为一些带有地址的分组,交换机和路由器会检查分组中的 TCP / IP 地址,并据此来确定分组的发送路线;
- Web服务器可能通过HTTP重定向将请求反弹给不同的Web服务器;
HTTP重定向:
Web服务器可以将短的重定向报文发回给客户端。
# 栗子:向 www.google.com 发送一条请求
GET / www.microsoft.com HTTP / 1.0
HOST : www.google.com
User-Agent:Mozilla | 4.5 | [en] (...)
服务器并没有回送带有HTTP状态码 **200 OK ** 的主体页面,而是回送了一个带有状态码 302 的重定向报文:
HTTP / 1.0 302 Redirect
Server:Stronghold / 2.4.2 Apache / 1.3.6
Location:HTTP://0.0.0.0
# 现在,浏览器会用重定向URL重新发送请求:
GET / www.microsoft.com HTTP / 1.0
HOST : 1.1.1.1
User-Agent:Mozilla | 4.5 | [en] (...)
HTTP重定向 可以在服务器间导引请求,但有以下缺点:需要原始服务器进行大量处理来判断重定向到哪台服务器上,有时,发布重定向所需的处理量几乎和提供页面本身所需要的处理量是一样的。增加了用户时延,因为访问页面时要进行两次往返。如果重定向服务器出现故障,站点就会瘫痪。
DNS重定向:
DNS转换: 最常见的重定向技术之一也是最简单的重定向技术之一,DNS轮转 使用了DNS主机名解析中的一项特性,在Web服务器集群中平衡负载。多个地址及轮转地址的循环:大多数DNS客户端只会使用多地址集中的第一个地址。为了均衡负载,大多数DNS服务器都会在每次完成查询之后对地址进行轮转,这种地址轮转通常称为DNS轮转。
其它基于DNS的重定向算法:
1.负载均衡算法: 有些DNS服务器会跟踪Web服务器上的负载,将负载最轻的Web服务器放在列表的最前面;
2.邻接路由算法: Web服务器集群地在地理上分散时,DNS服务器会尝试着将用户导向最近的Web服务器。
3.故障屏蔽算法:DNS服务器可以监视网络的状况,并将请求绕过出现服务中断或其它故障的地方。
代理的重定向方法:
显式浏览器配置:
浏览器含有一个下拉菜单,用户可以在这个菜单中输入代理的名字或IP地址,然后浏览器所有请求都可以发送给这个代理。缺点:配置为使用代理的浏览器,即使在代理无法响应的情况下,也不会联系原始服务器,对网络架构进行修改,并将这些修改通知给所有终端用户是很困难的。
代理自动配置:
动态配置浏览器,连接到正确的代理服务器。
Web代理自动发现协议:
在不要求终端用户手工配置代理设置,而且不依赖透明拦截的情况下,为Web浏览器提供一种发现并使用附近代理的方式。
- PAC文件自动发现:WPAD文件HTTP客户端定位一个PAC文件,并使用这个PAC文件找到适当的代理服务器的名字;
- WPAD算法:WAPD使用了一系列资源发现技术来确定适当的PAC文件CURL<配置URL>;
- 用DHCP进行CURL发现:要使用这种机制,就必须将CURL存储在WPAD客户端可以查询的DHCP服务器上;
- DNS记录查找:要让这种机制工作,就必须将合适的代理服务器的IP地址存储在WPAD客户端可以查询的DNS服务器上;
- 获取PAC文件:只要创建了候选的CURL,WPAD客户端通常就会向CURL发送一条GET请求;
- 何时执行WPAD:至少在出现以下的情况的时候进行Web代理自动发现:在Web客户端启动的时候 -- WPAD只在第一个实例启动的时候进行,后面的实例会继承这种设置。2.只有来自网络栈的通知,就说明客户端主机的IP地址改变了;
- WPAD欺骗:WPAD的IE5实现允许Web客户端在没有用户干预的情况下,自动检测代理设置;
- 超时:WPAD会经过多个级别的发现,客户端必须确保每个阶段都有时限保证;
### 图灵图书 -- HTTP权威指南
豆瓣读书 -- HTTP权威指南
《HTTP权威指南》– 16.重定向与负载均衡的更多相关文章
- 前端学HTTP之重定向和负载均衡
前面的话 HTTP并不是独自运行在网上的.很多协议都会在HTTP报文的传输过程中对其数据进行管理.HTTP只关心旅程的端点(发送者和接收者),但在包含有镜像服务器.Web代理和缓存的网络世界中,HTT ...
- Nginx 笔记与总结(16)nginx 负载均衡
nginx 反向代理时,如果后端有多台服务器,就可以实现负载均衡. 实现原理:把多台服务器用 upstream 绑定在一起并起一个组名,然后 proxy_pass 指向该组. ngx_http_ups ...
- 16 nginx实现负载均衡
一:nginx实现负载均衡-----------------原理-------------------------- (1) 反向代理后端如果有多台服务器,自然可形成负载均衡,但proxy_pass如 ...
- 《http权威指南》读书笔记18
概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...
- 负载均衡(Load Balancing)学习笔记(二)
概述 文章负载均衡(Load Balancing)学习笔记(一) 讲述了负载均衡的一般性原理,本文继续介绍常见的实现负载均衡的方法. HTTP重定向 HTTP重定向服务器是一台普通的Web服务器,用户 ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- 《HTTP 权威指南》
第一篇: Web基础 (HTTP概述. URL.HTTP报文.连接管理) 0. scheme:方案! 协议类型 1.HTTP:超文本传输(状态转移)协议:通信协议方案. web浏览 ...
- Openstack Mitaka 负载均衡 LoadBalancerv2
最近研究了一下Openstack负载均衡,yum源和源码级别的安装都尝试成功了.网上有很多文章都是LoadBalancerv1,这个已经被放弃了.所以写一下自己是如何使用LoadBalancerv ...
- nginx配置文件说明(包含IP黑名单、代理反射、负载均衡的配置)
先看下nginx配置文件整体结构 图片来源51cto 配置文件及注解: #运行用户 主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行 user nobody; ...
- HTTP 权威指南
第一章 http概述 1.3.1 媒体类型 - http为每种web传输的数据格式加上MIME类型数据标签(multipurpose internet mail 1.4 事务 一个请求 + 一个响应 ...
随机推荐
- GitLab 之 PlantUML 的配置及使用
转载自:https://cloud.tencent.com/developer/article/1010617 1.PlantUML介绍 UML 统一建模语言是一个通用的可视化建模语言,用于对软件进行 ...
- Linux安装中文字体(已验证)
1.安装字体命令 sudo apt install -y fontconfig 2.查看已安装的字体 (1)查看linux已安装字体 fc-list (2)查看linux已安装中文字体 fc-list ...
- 硬核剖析ThreadLocal源码,面试官看了直呼内行
工作面试中经常遇到ThreadLocal,但是很多同学并不了解ThreadLocal实现原理,到底为什么会发生内存泄漏也是一知半解?今天一灯带你深入剖析ThreadLocal源码,总结ThreadLo ...
- nrf9160做主控连接阿里云——(mqtt_simple例程)
简介:基本每一个云都支持MQTT,这种轻量级协议在数据量不大的应用上是一个很好的选择.上一篇博客使用SLM例程去连接了阿里云,本次使用mqtt_simple去连接云进行测试,关于一些已近在前面文章中演 ...
- 下一代工具链「GitHub 热点速览 v.22.43」
作为一个前端工程师,你这周被下一代的前端工具链 Turbo 刷屏了吗?不只是 Turbo 这个小工具,作为一个社区生产力工具,本周思否还开源了他们的问答系统 answer,能直接用上相关的技术标签也省 ...
- ML-梯度下降法的详细推导与代码实现
计算 对于线性回归,梯度下降法的目标就是找到一个足够好的向量\(\theta\),使代价函数\(J(\theta) = \sum_{i=1}^{m}(\hat{y}-y_{i})^{2}\)取得最小值 ...
- excel公式与快捷操作
将首行的公式,运用到这一整列 1.选中要输入公式的第一个单元格,SHIFT+CTRL+方向键下,在编辑栏中输入公式,按下CTRL+回车: 2.先输入要填充的公式,按下SHIFT+CTRL+方向键下,再 ...
- JavaScript&Bootstrap
1. JS介绍 JS诞生主要是完成页面的数据验证.因此它运行在客户端,需要浏览器来执行JS代码 JS最早取名LiveScript:为了吸引更多的Java程序员,更名JavaScript JS是弱类型, ...
- jQuery漏洞复现整理
jQuery DOM-based XSS 免责声明: 本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无 ...
- RobotFrameWork基础一
1.变量: 作用域: Set Global Variables:设定全局级变量 Set Suite Variables: 设定Test Suite 级变量 Set Test ...