重定向

重定向 的目标是尽快地将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. Kubernetes角色访问控制RBAC和权限规则(Role+ClusterRole)

    文章转载自:https://blog.csdn.net/BigData_Mining/article/details/88849696 基于角色的访问控制(Role-Based Access Cont ...

  2. 独辟蹊径:逆推Krpano切图算法,实现在浏览器切多层级瓦片图

    前言 此文我首发于CSDN(所以里面的图片有它的水印) 趁着隔离梳理一下之前做的一个有用的功能:在浏览器中去切割多分辨率瓦片图 这是一个有趣的过程,跟我一起探索吧 阅读本文需具备前置知识:对krpan ...

  3. vue3 vite2 封装 SVG 图标组件 - 基于 vite 创建 vue3 全家桶项目续篇

    在<基于 vite 创建 vue3 全家桶>一文整合了 Element Plus,并将 Element Plus 中提供的图标进行全局注册,这样可以很方便的延续 Element UI 的风 ...

  4. 基于docker安装phpmyadmin

    今天用到了phpadmin,要从头装的话,比较麻烦,所以就选择使用docker 安装 准备 任意Linux系统且已成功安装docker环境 安装phpmyAdmin 1. 拉取镜像 docker pu ...

  5. git中 gitignore 忽略文件操作

    通常,.gitignore文件被放置在存储库的根目录中.根目录也称为父目录和当前工作目录.根文件夹包含组成项目的所有文件和其他文件夹.也就是说,您可以将它放在存储库中的任何文件夹中.你甚至可以有多个. ...

  6. 华为路由器OSPF配置常用命令

    OSPF单区域配置 ospf 1 进入ospf视图1代表进程号 area 0 创建区域并进入OSPF区域视图,输入要创建的区域ID,骨干区域即区域0 network +IP +匹配码 display ...

  7. if、where、trim、choose、when、otherwise、foreach

    1.if if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行:反之标签中 的内容不会执行 <!--List<Emp> getEmpListBy ...

  8. js红宝书学习笔记(一)引用类型

    一.引用类型 ECMAScript中,引用类型是一种数据结构称之为对象定义,,引用对象不同于传统面向对象语言所支持的类和接口等基本结构 创建Object 实例的两种方式: new操作符跟Object构 ...

  9. 面向对象day1,创建类和对象时,对象内存是在哪

    上面我创建了两个类,一个是测试类,在测试包里面,一个是生产类,在src文件里面.可以看到,调用类里面的对象的时候需要先创建一个对象,然后通过对象来调用类里面的属性和方法等,但是这个时候我得先记录一下, ...

  10. Ubuntu安装错误 server64 busybox-initramfs安装失败

    因为想试试在Linux系统上爆破 所以安装了一下Ubuntu.第一次安装包报了个server64 busybox-initramfs.在安装系统那边.我一直还以为是我磁盘分配错了. 后来在网上找了资料 ...