在整个互联网的Web结构中,HTTP代理服务器是一个出现频率极高的组件(其他还有浏览器、缓存服务器、Web服务器、DNS解析服务器等),理解HTTP代理服务器的原理有助于我们更好地认识Web架构。
上图所示就是一个最原始代理服务器的角色:假设你现在在公司的办公室里访问http://www.zhihu.com,那通常来讲你是通过你们公司的代理服务器在畅游互联网。你本地浏览器的HTTP请求先到达代理服务器,代理服务器收到你的请求之后解析你的请求报文,然后向目标服务器发起HTTP请求,收到目标服务器的响应之后,再把响应报文回复给你。这就是代理服务器的工作流程。
为什么需要代理服务器
有些公司需要限制某些网站不能被员工访问,那么就可以在代理服务器上添加策略:当检测到有员工访问该网站时直接提示;
公司出于安全的考虑,避免员工访问的网站带入病毒,因为所有请求和响应都会经过代理,所以就可以在代理上做病毒检测;
假设员工A和员工B都想访问http://www.zhihu.com/test.html,那代理服务器可以缓存test.html,这样员工A和B的两个请求可以缩减为一个,降低了网络带宽的开销;
总而言之,代理服务器是一个口子,有了这个口子,我们就可以在这个口子上做任何事情
代理服务器与缓存服务器
在现实的架构中,代理服务器与缓存服务器的角色越来越模糊,或者说通常把两者合二为一——一个位于客户端和服务端中间位置的服务器既有代理的功能又有缓存的功能,比如我们熟悉的CDN。
最原始的代理服务器的代理是指充当客户端的“代理”,那如上图所示的代理则是Web服务器的代理,因此我们给其取名为反向代理服务器。(反向的含义是以前代理客户端,现在代理服务端)
反向代理服务器对外屏蔽了真实的服务器,并且作为服务端的出入口,我们可以在反向代理服务器上添加策略:比如Web攻击防护策略、CC攻击防护策略等。