5月阅读周·HTTP权威指南:重定向与负载均衡之代理自动配置篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
重定向与负载均衡
显式浏览器配置
大多数浏览器都可以配置为从代理服务器上获取内容——浏览器中有一个下拉菜单,用户可以在这个菜单中输入代理的名字或IP地址以及端口号。然后浏览器的所有请求都可以发送给这个代理。有些服务提供商不允许用户配置普通浏览器来使用代理,它们会要求用户下载事先配置好的浏览器。这些浏览器知道所要使用的代理的地址。
显式浏览器配置有以下两个主要的缺点。
· 配置为使用代理的浏览器,即使在代理无法响应的情况下,也不会去联系原始服务器。如果代理崩溃了,或者没有正确配置浏览器,用户就会遇到连接方面的问题。
· 对网络架构进行修改,并将这些修改通知给所有的终端用户都是很困难的。如果服务提供商要添加更多的代理服务器,或者使其中一些退出服务,用户都要修改浏览器代理设置。
代理自动配置
显式配置浏览器使其联系特定的代理,这样会限制网络架构方面的变动,因为它是靠用户来介入并重新配置浏览器的。自动配置方式可以动态配置浏览器,连接到正确的代理服务器,以解决这个问题。这种方法已经实现了,被称为代理自动配置(PAC)协议。
PAC是网景公司定义的,网景公司的Navigator和微软的Inernet Explorer浏览器都支持此协议。PAC的基本思想是让浏览器去获取一个称为PAC的特殊文件,这个文件说明了每个URL所关联的代理。必须配置浏览器,为这个PAC文件关联一个特定的服务器。这样,浏览器每次重启的时候都可以获取这个PAC文件了。
PAC文件是个JavaScript文件,其中必须定义函数:
function FindProxyForURL(url, host)
如下所示,浏览器要为请求的每条URL调用这个函数:
return_value = FindProxyForURL(url_of_request, host_in_url);
其返回值为一个字符串,用来说明浏览器应该到哪里请求这个URL。返回值可以是所关联的代理名称列表(比如,PROXY proxy1.domain.com, PROXY proxy2.domain.com),或者是字符串"DIRECT",这个字符串说明浏览器应该绕开所有的代理,直接连接原始服务器。
给出了浏览器对PAC文件的请求以及响应此请求的操作顺序。在本例中,服务器回送了带有JavaScript程序的PAC文件。JavaScript程序中有一个FindProxyForURL函数,用来告知浏览器,如果所请求的URL的主机位于netscape.com域中,就直接与原始服务器联系,所有其他请求都连接到proxy1.joes-cache.com。浏览器会为它所请求的每个URL调用这个函数,并根据此函数返回的结果进行连接。
PAC协议是相当强大的:JavaScript程序可以请求浏览器根据大量与主机名相关的参数来选择代理,比如DNS地址和子网,甚至星期几或具体时间。只要服务器中的PAC文件保持更新,能反映代理位置的变化,PAC就允许浏览器根据网络结构的变化自动与合适的代理进行联系。PAC存在的主要问题是必须要对浏览器进行配置,让它知道要从哪个服务器获取PAC文件,因此它就是一个全自动配置的系统。
就像那些预配置浏览器一样,现在一些主要的ISP都在使用PAC。
总结
HTTP并不是独自运行在网上的。很多协议都会在HTTP报文的传输过程中对其数据进行管理。HTTP只关心旅程的端点(发送者和接收者),但在包含有镜像服务器、Web代理和缓存的网络世界中,HTTP报文的目的地不一定是直接可达的。
重定向技术涉及网络工具、重定向技术细节以及判定HTTP报文最终目的地的协议。重定向技术通常可以用来确定报文是否终结于某个代理、缓存或服务器集群中某台特定的服务器。重定向技术可以将报文发送到客户端没有显式请求的地方去。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)