「原创」解决高可用问题的十八般武器——武器三:http重定向

武器三:http重定向。根据http协议规定,可以通过返回状态码与一个url网址,可以让浏览器重新发起请求访问到另一个地址。这样可以通过这种访问根据来源请求,有针对性的把请求重定向到不同的url地址,实现请求分流。这算是比较偏门的武器,但也有地方使用。

常用的重定向方式有: 301 redirect, 302 redirect 与meta fresh:

301 redirect::301代表永久性转移(Permanently Moved),301重定向是网页更改地址后对搜索引擎最友好的方法,只要不是暂时搬移的情况,都建议使用301来做转址。

302 redirect::302代表暂时性转移(Temporarily Moved ),在前些年,不少Black Hat SEO曾广泛应用这项技术作弊。各大主要搜索引擎均加强了打击力度,像Google对BMW德国网站的惩罚。即使网站客观上不是spam,也很容易被搜寻引擎误判为spam而遭到惩罚。

meta fresh:这在2000年前比较流行,它具体是通过网页中的meta指令,在特定时间后重定向到新的网页,如果延迟的时间太短(约5秒之内),会被判断为spam。

Web服务器可以将短的重定向报文发回给客户端,告诉他们去其他地方试试。有些Web站点会将HTTP重定向作为一种简单的负载均衡形式来使用。处理重定向的服务器(重定向服务器)找到可用的负载最小的内容服务器,并将浏览器重定向到那台服务器上去

对广泛分布的Web站点来说,确定“最佳”的可用服务器会更复杂一些,不仅要考虑到服务器的负载,还要考虑到浏览器和服务器之间的因特网距离。与其他一些形式的重定向相比,HTTP重定向的优点之一就是重定向服务器知道客户端的IP地址,理论上来讲,它可以做出更合理的选择

下面是HTTP重定向的工作过程


在图a中,Alice向www.joes-hardware.com发送了一条请求

GET /hammers.html HTTP/1.0

Host: www.joes-hardware.com

User-Agent: Mozilla/4.51 [en] (X11; U; IRIX 6.2 IP22)

在图b中,服务器没有回送带有HTTP状态码200的Web页面主体,而是回送了一个带有HTTP状态码302的重定向报文

HTTP/1.0 302 Redirect

Server: Stronghold/2.4.2 Apache/1.3.6

Location: http://161.58.228.45/hammers.html

现在,在图c中,浏览器会用重定向URL重新发送请求,这次会发送给主机161.58.228.45

GET /hammers.html HTTP/1.0

Host: 161.58.228.45

User-Agent: Mozilla/4.51 [en] (X11; U; IRIX 6.2 IP22)

另一个客户端可能会被重定向到另一台服务器上去。在图d-f中,Bob的请求会被重定向到161.58.228.46

HTTP重定向可以在服务器间导引请求,但它有以下几个缺点:需要原始服务器进行大量处理来判断要重定向到哪台服务器上去。有时,发布重定向所需的处理量几乎与提供页面本身所需的处理量一样;增加了用户时延,因为访问页面时要进行两次往返;如果重定向服务器出故障,站点就会瘫痪

使用场景一:未登录用户重定向到登录站点。服务端通过检查cookies或者session后,判断用户是否登录,没有登录的话就重定向到登录站点;

使用场景二:根据用户请求的ip、用户id等信息,将用户重定向到不同的服务站点,实现按用户分区访问。

以上是武器三http重定向介绍,后面还有更多的武器介绍,请关注我,每天更新,谢谢

你可能感兴趣的:(「原创」解决高可用问题的十八般武器——武器三:http重定向)