对squid.conf文件进行一些小修改,使其以httpd-accelerator模式运行后,我们可以将 Squid 作为代理缓存服务器运行。使用代理缓存服务器,您企业网络中的所有用户都使用 Squid 访问互联网。通过此配置,您可以完全控制,并应用关于可以查看、访问和下载内容的特殊策略。您还可以控制带宽使用、连接时间等等。代理缓存服务器可以配置为独立服务器供您的企业使用,也可以配置为与互联网上的其他代理服务器分层使用和共享缓存。
在下面的第一个示例中,我们将向您展示如何将 Squid 配置为独立服务器,然后稍微介绍一下缓存层级配置,其中两个或多个代理缓存服务器通过互相提供文档来协作。编辑squid.conf文件,vi/etc/squid/squid.conf并为作为独立服务器运行的代理缓存添加/更改以下选项
http_port 8080 icp_port 0 acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY cache_mem 16 MB cache_dir ufs /cache 200 16 256 redirect_rewrites_host_header off replacement_policy GDSF acl localnet src 192.168.1.0/255.255.255.0 acl localhost src 127.0.0.1/255.255.255.255 acl Safe_ports port 80 443 210 119 70 21 1025-65535 acl CONNECT method CONNECT acl all src 0.0.0.0/0.0.0.0 http_access allow localnet http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT http_access deny all cache_mgr admin@openna.com cache_effective_user squid cache_effective_group squid log_icp_queries off cachemgr_passwd my-secret-pass all buffered_logs on |
与httpd-accellerator模式配置的主要区别在于访问控制列表 (ACL) 的使用。此功能允许您根据源 IP 地址 (src)、目标 IP 地址 (dst)、源域名、目标域名、时间等等来限制访问。此功能存在多种类型,您应该查阅Squid.conf文件以获取完整列表。以下是四种最常用的类型
acl 名称 类型 数据
| | | |
acl 一些名称 src a.b.c.d/e.f.g.h # ACL 根据源 IP 地址限制访问
acl 一些名称 dst a.b.c.d/e.f.g.h # ACL 根据目标 IP 地址限制访问
acl 一些名称 srcdomain foo.com # ACL 根据源域名限制访问
acl 一些名称 dstdomain foo.com # ACL 根据目标域名限制访问
例如,要将对您的 Squid 代理服务器的访问限制为仅限您的内部客户端,以及特定范围的指定端口,可以使用如下配置
acl localnet src 192.168.1.0/255.255.255.0 acl localhost src 127.0.0.1/255.255.255.255 acl Safe_ports port 80 443 210 119 70 21 1025-65535 acl CONNECT method CONNECT acl all src 0.0.0.0/0.0.0.0 http_access allow localnet http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT http_access deny all |
此 acl 配置将允许来自私有 C 类 192.168.1.0 的所有内部客户端访问代理服务器;还建议您允许 localhost IP(您自己的服务器使用的特殊 IP 地址)访问代理。在我们选择一系列端口(80=http,443=https,210=wais,119=nntp,70=gopher 和 21=ftp),我们的内部客户端可以使用这些端口访问互联网之后,我们拒绝CONNECT方法,以防止外部人员尝试连接到代理服务器,最后,我们拒绝代理服务器上的所有源 IP 地址和端口。
: 避免生成比不使用 Web 缓存更多的网络流量的一个好策略是选择拥有多个同级缓存,而只有少量父级缓存。