重定向

重定向 的目标是尽快地将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浏览器提供一种发现并使用附近代理的方式。

  1. PAC文件自动发现:WPAD文件HTTP客户端定位一个PAC文件,并使用这个PAC文件找到适当的代理服务器的名字;
  2. WPAD算法:WAPD使用了一系列资源发现技术来确定适当的PAC文件CURL<配置URL>;
  3. 用DHCP进行CURL发现:要使用这种机制,就必须将CURL存储在WPAD客户端可以查询的DHCP服务器上;
  4. DNS记录查找:要让这种机制工作,就必须将合适的代理服务器的IP地址存储在WPAD客户端可以查询的DNS服务器上;
  5. 获取PAC文件:只要创建了候选的CURL,WPAD客户端通常就会向CURL发送一条GET请求;
  6. 何时执行WPAD:至少在出现以下的情况的时候进行Web代理自动发现:在Web客户端启动的时候 -- WPAD只在第一个实例启动的时候进行,后面的实例会继承这种设置。2.只有来自网络栈的通知,就说明客户端主机的IP地址改变了;
  7. WPAD欺骗:WPAD的IE5实现允许Web客户端在没有用户干预的情况下,自动检测代理设置;
  8. 超时:WPAD会经过多个级别的发现,客户端必须确保每个阶段都有时限保证;

### 图灵图书 -- HTTP权威指南

豆瓣读书 -- HTTP权威指南

《HTTP权威指南》– 16.重定向与负载均衡的更多相关文章

  1. 前端学HTTP之重定向和负载均衡

    前面的话 HTTP并不是独自运行在网上的.很多协议都会在HTTP报文的传输过程中对其数据进行管理.HTTP只关心旅程的端点(发送者和接收者),但在包含有镜像服务器.Web代理和缓存的网络世界中,HTT ...

  2. Nginx 笔记与总结(16)nginx 负载均衡

    nginx 反向代理时,如果后端有多台服务器,就可以实现负载均衡. 实现原理:把多台服务器用 upstream 绑定在一起并起一个组名,然后 proxy_pass 指向该组. ngx_http_ups ...

  3. 16 nginx实现负载均衡

    一:nginx实现负载均衡-----------------原理-------------------------- (1) 反向代理后端如果有多台服务器,自然可形成负载均衡,但proxy_pass如 ...

  4. 《http权威指南》读书笔记18

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  5. 负载均衡(Load Balancing)学习笔记(二)

    概述 文章负载均衡(Load Balancing)学习笔记(一) 讲述了负载均衡的一般性原理,本文继续介绍常见的实现负载均衡的方法. HTTP重定向 HTTP重定向服务器是一台普通的Web服务器,用户 ...

  6. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

  7. 《HTTP 权威指南》

    第一篇:  Web基础  (HTTP概述. URL.HTTP报文.连接管理) 0. scheme:方案!     协议类型 1.HTTP:超文本传输(状态转移)协议:通信协议方案.     web浏览 ...

  8. Openstack Mitaka 负载均衡 LoadBalancerv2

    ​ 最近研究了一下Openstack负载均衡,yum源和源码级别的安装都尝试成功了.网上有很多文章都是LoadBalancerv1,这个已经被放弃了.所以写一下自己是如何使用LoadBalancerv ...

  9. nginx配置文件说明(包含IP黑名单、代理反射、负载均衡的配置)

    先看下nginx配置文件整体结构 图片来源51cto 配置文件及注解: #运行用户 主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行 user nobody; ...

  10. HTTP 权威指南

    第一章 http概述 1.3.1 媒体类型 - http为每种web传输的数据格式加上MIME类型数据标签(multipurpose internet mail 1.4 事务 一个请求 + 一个响应 ...

随机推荐

  1. Elasticsearch方案选型必须了解的10件事!

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484372&idx=1&sn=e863e46 ...

  2. kubernetes 查看pod 的容器日志

    1.pod若处于运行状态,则通过kubectl logs 即可 # 查看指定pod的日志 kubectl logs <pod_name> kubectl logs -f <pod_n ...

  3. ElastAlert配置和告警规则各种用法

    config.yaml配置说明 #用来加载rule的目录,默认是example_rules rules_folder: example_rules #用来设置定时向elasticsearch发送请求 ...

  4. 基于MySQL的-u选项实现如何最大程度防止人为误操作MySQL数据库

    在mysql命令加上选项-U后,当发出没有WHERE或LIMIT关键字的UPDATE或DELETE时,MySQL程序就会拒绝执行.那么,我们基于MySQL提供的这项设置,就可以轻松实现如何最大程度防止 ...

  5. liunx的三个时间atime,mtime,ctime详细说明与使用场景

    导航:一.文件与文件夹三个时间:atime,mtime,ctime的含义二.ll命令查看文件时间三.stat命令查看文件的时间四.测试创建/修改文件的时间五.常用命令关于文件时间相关 - - - - ...

  6. P7962 [NOIP2021] 方差 (DP)

    题目的意思就是可以交换差分数组,对答案进行化简:n∑ai2​−(∑ai​)2 ,再通过手玩分析可得最优解的差分数组一定是单谷(可以感性理解一下),因此我们将差分数组排序,依次加入,每次可以选择加在左边 ...

  7. JVM中的堆

    堆 内存结构 堆的核心概念 <java虚拟机规范>中对java堆的描述是:所有的对象实例以及数组都应当在运行时分配在堆上. 一个JVM实例只存在一个堆内存(就是new 出来一个对象),ja ...

  8. 齐博x1标签实例:标签设置取组图不存在就取内容中的图片

    对于CMS或者是其它,使用下面的代码 <div class="morepic"> {volist name=":getArray($pics=$rs.picu ...

  9. python关于Django搭建简单博客项目(详解一)

    上一篇我们说了如何搭建简易博客网站,下面我们来进行详细解答.本文没有特定顺序,请结合上一篇和源代码参照学习. 相关源代码和解析请参看:https://github.com/Cheng0829/mysi ...

  10. 元数据性能大比拼:HDFS vs S3 vs JuiceFS

    元数据是存储系统的核心大脑,元数据性能对整个大数据平台的性能和扩展能力至关重要.尤其在处理海量文件的时候.在平台任务创建.运行和结束提交阶段,会存在大量的元数据 create,open,rename ...