《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 事务 一个请求 + 一个响应 ...
随机推荐
- 打造企业自己代码规范IDEA插件(上)
"交流互鉴是文明发展的本质要求.只有同其他文明交流互鉴.取长补短,才能保持旺盛生命活力." 这说的是文明,但映射到计算机技术本身也是相通的,开源代码/项目就是一种很好的技术交流方式 ...
- PAT (Basic Level) Practice 1009 说反话 分数 20
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小 ...
- [CG从零开始] 4. pyopengl 绘制一个正方形
在做了 1-3 的基础工作后,我们的开发环境基本 OK 了,我们可以开始尝试利用 pyopengl 来进行绘制了. 本文主要有三个部分 利用 glfw 封装窗口类,并打开窗口: 封装 shader 类 ...
- JUC(3)
文章目录 1.集合类不安全 2.在高并发情况下arraylist()并不安全 3.高并发下set并不安全 3.测试map(高并发情况下出现问题) 1.集合类不安全 2.在高并发情况下arraylist ...
- HTML元素大全(2)-表单
01.<form>表单 <form> 表单是比较重要的HTML元素,块元素,主要作用是向服务端提交数据.结合表单元素input使用,通过内部的button按钮提交(type=& ...
- javascript编程单线程之异步模式Asynchronous
异步模式Asynchronous 不会等待这个任务结束才开始执行下一个任务,开启之后立即执行下一个任务,后续逻辑一般会通过回调函数的方式定义,异步模式对js 非常重要,没有异步任务单线程的 js 语言 ...
- 第二阶段:高级核心基础知识·第4章shell特性·2
1.统计日志,日志内容 39.96.187.239 - - [11/Nov/2019:10:08:01 +0800] "GET / HTTP/1.1" 302 0 "-& ...
- VS2022连接Oracle数据库所需包和连接字符串
VS连接ORACLE数据库 l VS2022连接ORACLE数据库时,需要引入Oracle.ManagedDataAccess.Core包. l 引入方式:打开VS2022==>项目==&g ...
- vue 祖先组件操作后代组件方法
前言:最近写代码遇到一问题:祖先级别的组件怎么操作孙子的儿子的组件方法(是不是已经绕晕了),在网上搜了半天都是父子传参,父子操作,晕晕乎乎的想起了bus(事件总线), 原理就是:是在vue原型上挂载( ...
- Dubbo-聊聊通信模块设计
前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...