目录
摘要
Squid 是广泛用于 Linux 和 UNIX 平台的代理缓存。这表示它会将请求的因特网对象(例如 Web 或 FTP 服务器上的数据)储存在离请求工作站更近(与服务器相比)的计算机上。可以在多个层次结构中设置它以确保最佳的响应时间和使用较低的带宽(即使在对最终用户来说是透明的方式)。可以使用其他软件如 squidGuard 来过滤 Web 内容。
Squid 可以充当代理缓存。它将来自客户机(这里指来自 Web 浏览器)的对象请求重定向至服务器。当服务器回复所请求的对象后,它会将这些对象传递给客户程序并在硬盘缓存中保存对象副本。缓存的一个优点就是:当多个客户程序请求同一对象时,可以从硬盘缓存中提供该对象。这样客户机接收数据的速度要比从因特网接收快得多。此过程还可以减少网络流量。
除实际的缓存外,Squid 还提供众多功能,如在代理服务器的相互通讯的层次之间分配负载、为所有访问代理的客户机定义严格的访问控制列表、借助其他应用程序允许或拒绝对特定 Web 页的访问以及生成有关频繁访问的 Web 页的统计数字供评估用户的浏览习惯。Squid 不是通用代理。通常只充当 HTTP 连接的代理。它确实还支持 FTP、Gopher、SSL 和 WAIS 等协议,但不支持其他的因特网协议,如 Real Audio、新闻或视频会议。由于 Squid 只支持使用 UDP 协议在不同的缓存间通讯,所以很多其他多媒体程序都不受支持。
作为代理缓存,Squid 的使用方法分为几种。与防火墙结合使用时,能够提高安全性。可以一起使用多个代理。还能确定应该缓存的对象的类型以及缓存的时间。
Squid 可以与防火墙结合起来,通过使用代理缓存防止内部网络遭受外部攻击。防火墙会拒绝 Squid 之外的所有客户机对外部服务的访问。所有 Web 连接都必须通过代理方式建立。经过此配置后,Squid 便可全面控制 Web 访问。
如果防火墙配置中包含 DMZ,代理应该在此区域内操作。第 30.5 节 “配置透明代理”描述了如何实施透明代理。它能简化客户机的配置,因为在这种情况下,它们不需要代理的任何信息。
可以配置 Squid 的几个实例从而在它们之间交换对象。这样会减少系统负载,同时提高找到本地网络中已有对象的几率。还可以配置缓存层次,以便能够将对象请求转发给同级缓存或父级缓存 - 使其从本地网络中的其他缓存或直接从数据源获取对象。
为了不给网络增加总体数据流量,为缓存层次选择适当的拓扑结构是十分重要的。对于超大型网络,合理的做法是:为每个子网配置一个代理服务器并将其连接至父代理,再通过父代理连接至 ISP 的代理缓存。
所有这些通讯都通过在 UDP 协议之上运行的 ICP(因特网缓存协议)来处理。缓存间的数据传送使用基于 TCP 的 HTTP(超文本传送协议)来处理。
要找到从中可获得对象的最合适的服务器,一个缓存会向所有同级代理发送 ICP 请求。同级代理会通过 ICP 响应回复请求(如果检测到对象就回复 HIT 代码,如果未检测到则回复 MISS 代码)。如果发现多个 HIT 响应,代理服务器会根据哪个缓存回复最快或哪个最近等因素决定从哪个服务器下载。如果没有收到满意的响应,该请求将被发送至父缓存。
![]() | |
为了避免网络中不同缓存中的对象重复,还会使用其他 ICP 协议,如 CARP(缓存阵列路由协议)或 HTCP(超文本缓存协议)。网络中维护的对象越多,找到所需对象的可能性就越大。 | |