1 反向代理的概念
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
通常的代理服务器,只用于代理内部网络对 Internet 外部网络的连接请求,客户机必须指定代理服务器,并将本来要直接发送到 Web 服务器上的 http 请求发送到代理服务器中。不支持外部网络对内部网络的连接请求,因为内部网络对外部网络是不可见的。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个 Web 服务器,外部网络就可以简单把它当作一个标准的 Web 服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者 CGI程序,都保存在内部的 Web 服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了 Web服务器的安全性。
反向代理就是通常所说的 web 服务器加速,它是一种通过在繁忙的 web服务器和外部网络之间增加一个高速的 web缓冲服务器来降低实际的 web 服务器的负载的一种技术。反向代理是针对web 服务器提高加速功能,作为代理缓存,它并不是针对浏览器用户,而针对一台或多台特定的web 服务器,它可以代理外部网络对内部网络的访问请求。
反向代理服务器会强制将外部网络对要代理的服务器的访问经过它,这样反向代理服务器负
责接收客户端的请求,然后到源服务器上获取内容,把内容返回给用户,并把内容保存到本地,以便日后再收到同样的信息请求时,它会把本地缓存里的内容直接发给用户,以减少后端 web 服务器的压力,提高响应速度。
2 反向代理服务器与内容服务器
代理服务器充当服务器的替身,如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。
当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中
的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。
这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。
3 反向代理服务器的工作流程
1) 用户通过域名发出访问 web 服务器的请求,该域名被 DNS 服务器解析为反向代理服务器的 IP地址;
2) 反向代理服务器接受用户的请求;
3) 反向代理服务器在本地缓存中查找请求的内容,找到后直接把内容发送给用户;
4) 如果本地缓存里没有用户所请求的信息内容,反向代理服务器会代替用户向源服务器请求同样的信息内容,并把信息内容发给用户,如果信息内容是缓存的还会把它保存到缓存中。
4 反向代理的好处
1) 解决了网站服务器对外可见的问题;
2) 节约了有限的 IP 地址资源,企业内所有的网站共享一个在 internet 中注册的 IP 地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务;
3) 保护了真实的 web 服务器,web 服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了 web 服务器的资源安全;
4) 加速了对网站访问速度,减轻 web 服务器的负担,反向代理具有缓存网页的功能,如果用户需要的内容在缓存中,则可以直接从代理服务其中获取,减轻了 web 服务器的负荷,同时也加快了用户的访问速度。