重定向

重定向 的目标是尽快地将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:定制分词器(analyzer)及相关性

    转载自:https://elasticstack.blog.csdn.net/article/details/114278163 在许多的情况下,我们使用现有的分词器已经足够满足我们许多的业务需求,但 ...

  2. nginx日志输出配置json格式

    修改nginx配置文件 http { include mime.types; default_type application/octet-stream; charset utf-8; # 原有日志格 ...

  3. 我操作MySQL的惊险一幕

    背景 前几天因工作需要,组长给我安排了一个数据清洗的任务. 任务:把 A 表的数据洗到 B 表. 我的第一反应,什么是「洗」?洗数据是什么?洗钱我倒是知道. 不过我不能慌啊,于是问了问组长. 我:组长 ...

  4. oneplus8手机蓝牙连接tws耳机无法双击退出语音助手

    通过蓝牙协议栈我们知道,蓝牙耳机可以通过发送AT指令唤醒或者退出语音助手 唤醒语音助手: AT+BVRA=1 退出语音助手: AT+BVRA=0 但是实际操作中发现双击可以唤醒但再次双击却无法退出语音 ...

  5. MySQL之安装(linux两种版本版本安装)

    LinuxMySQL安装(Mysql5.5版本) 第一种 有安装包的安装方式 1.下载地址: http://dev.mysql.com/downloads/mysql 2.检查当前系统是否安装过mys ...

  6. Node.js躬行记(24)——低代码

    低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台.让具有不同经验水平的开发人员可以通过图形化的用户界面,通过拖拽组件和模型驱动的逻辑来创建网页和移动应用程序 ...

  7. JS中的键盘Keycode

    常用的keycode 组合键 if ((window.event.ctrlKey)&&(window.event.keyCode==49)) alert("您按下了CTRL+ ...

  8. $_SERVER['HTTP_USER_AGENT']:在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息

    在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息. 我机器:操作系统:WIN7旗舰版 64操作系统 以下为各个浏览器下$_SERVER['HTT ...

  9. 云原生之旅 - 5)Kubernetes时代的包管理工具 Helm

    前言 上一篇文章 [基础设施即代码 使用 Terraform 创建 Kubernetes] 教会了你如何在Cloud上面建Kubernetes资源,那么本篇来讲一下如何在Kubernetes上面部署应 ...

  10. 类的编写模板之简单Java类

    简单Java类是初学java时的一个重要的类模型,一般由属性和getter.setter方法组成,该类不涉及复杂的逻辑运算,仅仅是作为数据的储存,同时该类一般都有明确的实物类型.如:定义一个雇员的类, ...