28.7. 配置/etc/squid/squid.conf文件 -/代理缓存模式

squid.conf文件进行一些小修改,使其以httpd-accelerator模式运行后,我们可以将 Squid 作为代理缓存服务器运行。使用代理缓存服务器,您企业网络中的所有用户都使用 Squid 访问互联网。通过此配置,您可以完全控制,并应用关于可以查看、访问和下载内容的特殊策略。您还可以控制带宽使用、连接时间等等。代理缓存服务器可以配置为独立服务器供您的企业使用,也可以配置为与互联网上的其他代理服务器分层使用和共享缓存。

Squid-StandAlone

在下面的第一个示例中,我们将向您展示如何将 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 地址和端口。

Tip: 避免生成比不使用 Web 缓存更多的网络流量的一个好策略是选择拥有多个同级缓存,而只有少量父级缓存。