Squid 充当缓存代理服务器。它将来自客户端(在本例中为 Web 浏览器)的对象请求重定向到服务器。当请求的对象从服务器到达时,它将对象传递给客户端并将其副本保留在硬盘缓存中。缓存的优点是,多个客户端请求同一对象可以从硬盘缓存中提供。这使得客户端能够比从 Internet 接收数据更快。此过程还减少了网络流量。
除了实际缓存,Squid 还提供广泛的功能
在相互通信的代理服务器层次结构中分发负载
为所有访问代理服务器的客户端定义严格的访问控制列表
使用其他应用程序允许或拒绝访问特定网页
生成有关频繁访问的网页的统计数据,用于评估浏览习惯
Squid 不是通用代理服务器。它通常只代理 HTTP 连接。它支持 FTP、Gopher、SSL 和 WAIS 协议,但不支持其他 Internet 协议,如新闻协议或视频会议协议。由于 Squid 只支持 UDP 协议在不同缓存之间提供通信,因此不支持许多多媒体程序。
作为缓存代理服务器,Squid 可以通过多种方式使用。当与防火墙结合使用时,它可以帮助提高安全性。可以同时使用多个代理。它还可以确定应缓存哪些类型的对象以及缓存多长时间。
可以将 Squid 与防火墙结合使用,以保护内部网络免受外部攻击。防火墙拒绝所有客户端访问外部服务,除了 Squid。所有 Web 连接都必须由代理服务器建立。通过此配置,Squid 完全控制 Web 访问。
如果防火墙配置包含非军事区 (DMZ),则代理服务器应在此区域内运行。26.6 节,“配置透明代理”描述了如何实现透明代理。这简化了客户端的配置,因为在这种情况下,它们不需要任何关于代理服务器的信息。
可以配置多个 Squid 实例以在它们之间交换对象。这降低了系统总负载并增加了从本地网络检索对象的几率。还可以配置缓存层次结构,因此缓存可以将对象请求转发给同级缓存或父缓存——使其从本地网络中的另一个缓存或直接从源请求对象。
选择适当的缓存层次结构拓扑很重要,因为不希望增加网络上的总流量。对于大型网络,为每个子网配置一个代理服务器并将它们连接到父代理服务器是有意义的,父代理服务器又连接到 ISP 的缓存代理服务器。
所有这些通信都由运行在 UDP 协议之上的 ICP(Internet 缓存协议)处理。缓存之间的数据传输使用基于 TCP 的 HTTP(超文本传输协议)处理。
为了找到最合适的服务器来请求对象,缓存会向所有同级代理发送 ICP 请求。同级代理通过 ICP 响应回答这些请求。如果检测到对象,它们使用代码HIT,否则使用MISS。
如果找到多个HIT响应,代理服务器根据哪个缓存发送了最快的响应或哪个缓存更近等因素来决定从哪个服务器下载。如果没有收到令人满意的响应,则请求将发送到父缓存。
为了避免网络中不同缓存中的对象重复,使用了其他 ICP 协议,例如 CARP(缓存数组路由协议)或 HTCP(超文本缓存协议)。网络中维护的对象越多,找到所需对象的可能性就越大。
系统要求取决于系统必须承受的最大网络负载。因此,请检查负载峰值,因为在这些时候,负载可能超过一天平均值的四倍。如有疑问,请稍微高估系统要求。让 Squid 接近其能力极限工作可能会导致服务质量严重下降。以下部分按重要性顺序指出系统因素
RAM 大小
CPU 速度/物理 CPU 核心
磁盘缓存大小
硬盘/SSD 及其架构
Squid 所需的内存 (RAM) 量与缓存中的对象数量直接相关。随机存取存储器比硬盘/SSD 快得多。因此,为 Squid 进程提供足够的内存非常重要,因为如果使用交换磁盘,系统性能会急剧下降。
Squid 还将缓存对象引用和频繁请求的对象存储在主内存中,以加快这些数据的检索。除此之外,Squid 还需要在内存中保留其他数据,例如所有处理的 IP 地址表、精确的域名缓存、最频繁请求的对象、访问控制列表、缓冲区等等。
Squid 经过优化,最适合较低的处理器核心数(4-8 个物理核心),每个核心都提供高性能。提供虚拟核心的技术,例如超线程,可能会损害性能。
为了最大程度地利用多个 CPU 核心,需要设置多个工作线程写入不同的缓存设备。默认情况下,多核支持处于禁用状态。
在小缓存中,HIT(找到已位于其中的请求对象)的概率很小,因为缓存很容易被填满,并且较少请求的对象会被较新的对象替换。例如,如果缓存有 1 GB 可用,并且用户每天仅使用 10 MB 的浏览量,那么填满缓存需要一百多天。
确定所需缓存大小的最简单方法是考虑连接的最大传输速率。对于 1 Mbit/s 连接,最大传输速率为 128 KB/s。如果所有这些流量都进入缓存,一小时内将累积 460 MB。假设所有这些流量仅在八个工作小时内生成,则一天将达到 3.6 GB。由于连接通常不会达到其上限容量,因此可以假定缓存处理的总数据量约为 2 GB。因此,在此示例中,Squid 需要 2 GB 的磁盘空间来缓存一天的浏览数据。
速度在缓存过程中起着重要作用,因此这个因素值得特别关注。对于硬盘/SSD,此参数描述为随机寻道时间或随机读取性能,以毫秒为单位测量。由于 Squid 从硬盘/SSD 读取或写入的数据块往往很小,因此硬盘/SSD 的寻道时间/读取性能比其数据吞吐量更重要。
作为代理服务器,高转速硬盘或 SSD 是最佳选择。使用硬盘时,最好使用多个较小的硬盘,每个硬盘都有一个单独的缓存目录,以避免过长的读取时间。
使用 RAID 系统可以在牺牲速度的情况下提高可靠性。但是,出于性能原因,请避免使用 (软件) RAID5 和类似设置。
在大多数情况下,文件系统选择无关紧要。但是,使用挂载选项noatime可以提高性能——Squid 提供自己的时间戳,因此它不需要文件系统来跟踪访问时间。
由于 squid 默认未安装在 openSUSE® Leap 上,请确保您的系统上已安装该软件包。
由于 Squid 在 openSUSE Leap 中已预配置,因此您可以在安装后立即启动它。为避免启动期间出现问题,请确保网络已连接到 Internet,并且至少有一个名称服务器。使用具有动态 DNS 配置的拨号连接可能会导致问题。在这种情况下,至少指定名称服务器,因为如果 Squid 在 /var/run/netconfig/resolv.conf 中未检测到 DNS 服务器,它将不会启动。
要启动 Squid,请运行以下命令
>sudosystemctl start squid
要在系统启动时启动 Squid,请使用 systemctl enable squid 启用该服务。
有几种方法可以检查 Squid 是否正在运行
使用 systemctl
>systemctl status squid
输出应指示 Squid 处于 loaded 和 active (running) 状态。
使用 Squid 本身
>sudosquid -k check | echo $?
输出应为0,但它也可以包含其他消息,例如警告。
要在本地系统上测试 Squid 的功能,请选择以下选项之一
使用 squidclient,一个命令行工具,它输出 Web 请求的响应,类似于 wget 或 curl。
与 wget 或 curl 不同,squidclient 自动连接到 Squid 的默认代理设置 localhost:3128。但是,如果您修改了 Squid 的配置,则必须相应地配置 squidclient。有关详细信息,请参阅 squidclient --help。
squidclient 发送请求 #>squidclient http://www.example.orgHTTP/1.1 200 OK Cache-Control: max-age=604800 Content-Type: text/html Date: Fri, 22 Jun 2016 12:00:00 GMT Expires: Fri, 29 Jun 2016 12:00:00 GMT Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT Server: ECS (iad/182A) Vary: Accept-Encoding X-Cache: HIT x-ec-custom-error: 1 Content-Length: 1270 X-Cache: MISS from moon1 X-Cache-Lookup: MISS from moon:3128 Via: 1.1 moon (squid/3.5.16)2 Connection: close <!doctype html> <html> <head> <title>Example domain</title> [...] </body> </html>
示例 26.1,“使用 squidclient 发送请求”中显示的输出由两部分组成
响应的协议头(空行之前的行)。
响应的实际内容(空行之后的行)。
要验证是否使用了 Squid,请参考选定的标题行
使用浏览器:将 localhost 设置为代理,将 3128 设置为端口。然后加载一个页面,并在浏览器检查器或开发人员工具的面板中检查响应头。头应该类似于示例 26.1,“使用 squidclient 发送请求”中所示。
为了允许本地系统和其他系统的用户访问 Squid 和 Internet,请将配置文件 /etc/squid/squid.conf 中的条目从 http_access deny all 更改为 http_access allow all。但是,请记住,这将使 Squid 对任何人完全可访问。因此,定义控制对代理服务器访问的 ACL(访问控制列表)。修改配置文件后,必须重新加载或重新启动 Squid。有关 ACL 的更多信息,请参阅26.5.2 节,“访问控制选项”。
如果 Squid 在短时间后停止工作,请检查是否存在不正确的名称服务器条目或 /var/run/netconfig/resolv.conf 文件是否缺失。Squid 将启动失败的原因记录在文件 /var/log/squid/cache.log 中。
有两种方法可以重新加载 Squid
使用 systemctl
>sudosystemctlreload squid
或者
>sudosystemctlrestart squid
使用 YaST
在 Squid 模块中,单击 按钮。
要停止 Squid,请使用以下选项之一
使用 systemctl
>sudosystemctlstop squid
使用 YaST
在 Squid 模块中单击 按钮。
关闭 Squid 可能需要一段时间,因为 Squid 会等待最多半分钟,然后才会断开与客户端的连接并将其数据写入磁盘(请参阅 /etc/squid/squid.conf 中的 shutdown_lifetime 选项)。
使用 kill 或 killall 终止 Squid 可能会损坏缓存。为了能够重新启动 Squid,必须删除损坏的缓存。
即使它不管理自己的域,设置本地 DNS 服务器也是有意义的。在这种情况下,它充当仅缓存的名称服务器,并且无需任何特殊配置即可通过根名称服务器解析 DNS 请求(请参阅19.4 节,“启动 BIND 名称服务器”)。这如何实现取决于您在 Internet 连接配置期间是否选择了动态 DNS。
通常,对于动态 DNS,DNS 服务器由提供商在建立 Internet 连接时设置,并且本地 /var/run/netconfig/resolv.conf 文件会自动调整。此行为在 /etc/sysconfig/network/config 文件中使用 NETCONFIG_DNS_POLICY sysconfig 变量指定。使用 YaST sysconfig 编辑器将 NETCONFIG_DNS_POLICY 设置为 ""。
然后,将本地 DNS 服务器添加到 /var/run/netconfig/resolv.conf 文件中,使用 127.0.0.1 作为 localhost 的 IP 地址。这样,Squid 在启动时总是可以找到本地名称服务器。
要使提供商的名称服务器可访问,请在配置文件 /etc/named.conf 中 forwarders 下指定它及其 IP 地址。对于动态 DNS,这可以在建立连接时通过将 sysconfig 变量 NETCONFIG_DNS_POLICY 设置为 auto 来自动完成。
对于静态 DNS,建立连接时不会进行自动 DNS 调整,因此无需更改任何 sysconfig 变量。但是,您必须按照动态 DNS中所述,在文件 /var/run/netconfig/resolv.conf 中指定本地 DNS 服务器。此外,必须在 /etc/named.conf 文件中 forwarders 下手动指定提供商的静态名称服务器及其 IP 地址。
如果您正在运行防火墙,请确保 DNS 请求可以穿过它。
YaST Squid 模块包含以下选项卡
指定 Squid 的启动方式以及在哪些接口中打开哪些防火墙端口。
定义 Squid 监听来自客户端的 HTTP 请求的所有端口。
定义 Squid 如何处理缓存中的对象。
定义与缓存内存、最大和最小对象大小等相关的设置。
定义 Squid 存储缓存交换文件的顶级目录。
通过 ACL 组控制对 Squid 服务器的访问。
定义访问、缓存和缓存存储日志文件的路径以及连接超时和客户端生命周期。
指定管理员的语言和邮件地址。
Squid 代理服务器设置存储在 /etc/squid/squid.conf 文件中。尽管首次启动 Squid 不需要对文件进行任何更改,但外部客户端最初被拒绝访问。代理可用于 localhost。默认端口是 3128。预安装的配置文件 /etc/squid/squid.conf 提供了有关选项和许多示例的详细信息。
许多条目使用注释字符#禁用。相关规范可以在行的末尾找到。给定值通常与默认值相关,因此删除注释符号而不更改任何参数通常没有效果。如果可能,请保持注释行不变,并将选项与修改后的值插入到下一行中。这样,默认值可以很容易地恢复并与更改进行比较。
如果您从早期版本的 Squid 更新,建议编辑新的 /etc/squid/squid.conf,并且只应用在以前文件中所做的更改。
有时,Squid 选项会添加、删除或修改。因此,如果您尝试使用旧的 squid.conf,Squid 可能会停止正常工作。
以下是 Squid 配置选项的选定列表。它不是详尽的。Squid 软件包在 /etc/squid/squid.conf.documented 中包含一个完整且略有文档记录的选项列表。
http_port PORT这是 Squid 监听客户端请求的端口。默认端口是 3128,但 8080 也很常见。
cache_peer HOST_NAME TYPE PROXY_PORT ICP_PORT此选项允许创建协同工作的缓存网络。缓存对等体是也托管网络缓存并与您自己的缓存存在关系的计算机。关系类型指定为TYPE。类型可以是parent或sibling。
作为HOST_NAME,指定要使用的代理服务器的名称或 IP 地址。对于PROXY_PORT,指定在浏览器中使用的端口号(通常为8080)。将ICP_PORT设置为7,或者如果父级的 ICP 端口未知且其使用与提供商无关,则设置为0。
要使 Squid 像 Web 浏览器而不是代理服务器一样运行,请通过附加选项 default 和 no-query 来禁用 ICP 协议的使用。
cache_mem SIZE此选项定义 Squid 可用于最常见回复的内存量。默认值为 8 MB。这不指定 Squid 的内存使用量,并且可能会超出此限制。
cache_dir STORAGE_TYPE CACHE_DIRECTORY CACHE_SIZE LEVEL_1_DIRECTORIES LEVEL_2_DIRECTORIES选项 cache_dir 定义磁盘缓存的目录。在 openSUSE Leap 的默认配置中,Squid 不创建磁盘缓存。
占位符STORAGE_TYPE可以是以下之一
基于目录的存储类型:ufs、aufs(默认)、diskd。这三者都是存储格式 ufs 的变体。但是,ufs 作为 Squid 核心线程的一部分运行,而 aufs 在单独的线程中运行,diskd 使用单独的进程。这意味着后两种类型避免了由于磁盘 I/O 而阻塞 Squid。
基于数据库的存储系统:rock。这种存储格式依赖于单个数据库文件,其中每个对象占用一个或多个固定大小的内存单元(“槽位”)。
下面,只讨论基于ufs的存储类型的参数。rock具有不同的参数。
CACHE_DIRECTORY是磁盘缓存的目录。默认情况下,它是/var/cache/squid。CACHE_SIZE是该目录的最大大小(以兆字节为单位);默认情况下,此值设置为 100 MB。将其设置为可用磁盘空间的 50% 到最大 80% 之间。
LEVEL_1_DIRECTORIES和LEVEL_2_DIRECTORIES值指定在CACHE_DIRECTORY下的第一级中创建多少个子目录。默认情况下,在CACHE_DIRECTORY下的第一级中创建 16 个子目录,并在每个子目录中创建 256 个子目录。这些值应谨慎增加,因为创建太多目录可能会导致性能问题。
如果您有多个共享缓存的磁盘,请指定多行 cache_dir。
cache_access_log LOG_FILE、cache_log LOG_FILE、cache_store_log LOG_FILE这三个选项指定了 Squid 记录所有操作的路径。通常,此处无需更改。如果 Squid 负载很高,将缓存和日志文件分发到多个磁盘上可能是有意义的。
client_netmask NETMASK此选项允许通过应用子网掩码来屏蔽日志文件中的客户端 IP 地址。例如,要将 IP 地址的最后一位设置为0,请指定255.255.255.0。
ftp_user E-MAIL此选项允许设置 Squid 应该用于匿名 FTP 登录的密码。在此处指定一个有效的电子邮件地址,因为 FTP 服务器会检查这些电子邮件地址的有效性。
cache_mgr E-MAIL当 Squid 崩溃时,它会向指定的电子邮件地址发送消息。默认值为webmaster。
logfile_rotate VALUE当与 squid -k rotate 一起使用时,squid 会轮换日志文件。文件会编号,并且在达到指定值后,最旧的文件将被覆盖。默认值是 10,它会轮换编号为 0 到 9 的日志文件。
然而,在 openSUSE Leap 上,日志文件的轮换是使用 logrotate 和配置文件 /etc/logrotate.d/squid 自动执行的。
append_domain DOMAIN使用append_domain指定在未给定域名时自动附加的域名。通常,在此处指定您自己的域名,这样将浏览器指向www将导航到您自己的 Web 服务器。
forwarded_for STATE如果此选项设置为on,它会在标头中添加一行,类似于
X-Forwarded-For: 192.168.0.1
如果将此选项设置为 off,Squid 会从 HTTP 请求中删除客户端的 IP 地址和系统名称。
negative_ttl TIME、negative_dns_ttl TIME如果配置了这些选项,Squid 会缓存某些类型的失败,例如 404 响应。然后它拒绝发出新请求,即使资源变得可用。
默认情况下,negative_ttl 设置为 0,negative_dns_ttl 设置为 1 minutes。这意味着 Web 请求的负面响应默认不缓存,而 DNS 请求的负面响应缓存 1 分钟。
never_direct allow ACL_NAME为了防止 Squid 直接从 Internet 接受请求,使用选项 never_direct 强制连接到另一个代理服务器。这必须事先在 cache_peer 中指定。如果将 all 指定为 ACL_NAME,则所有请求都直接转发到 parent。例如,如果您的提供商强制使用其代理或拒绝其防火墙直接访问 Internet,则可能需要这样做。
Squid 可以通过访问控制列表 (ACL) 控制对代理服务器的访问,这些列表包含按顺序处理的规则。ACL 必须在使用前定义。Squid 包含默认 ACL,例如 all 和 localhost。但是,要使 ACL 生效,它必须具有相应的 http_access 规则。
选项acl的语法如下
acl ACL_NAME TYPE DATA
此语法中的占位符代表以下内容
ACL_NAME可以是任何名称。
对于TYPE,从/etc/squid/squid.conf文件ACCESS CONTROLS部分中可用的选项中选择。
DATA的规范取决于各个 ACL 类型,例如主机名、IP 地址或 URL。
要在 YaST Squid 模块中添加规则,请打开该模块并单击选项卡。单击 ACL 组列表下的,然后输入规则的名称、类型及其参数。
有关 ACL 规则类型的更多信息,请参阅 Squid 文档:https://squid.org.cn/Versions/v3/3.5/cfgman/acl.html。
acl mysurfers srcdomain .example.com 1 acl teachers src 192.168.1.0/255.255.255.0 2 acl students src 192.168.7.0-192.168.9.0/255.255.255.0 3 acl lunch time MTWHF 12:00-15:00 4
http_access 定义谁被允许使用代理服务器,以及谁可以访问 Internet 上的内容。您需要为此定义 ACL。localhost 和 all ACL 已在上面定义,您可以通过 deny 或 allow 拒绝或允许访问它们。可以创建包含任意数量 http_access 条目的列表,从上到下处理。根据哪个先出现,允许或拒绝访问相应的 URL。最后一个条目应始终是 http_access deny all。在以下示例中,localhost 拥有对所有内容的自由访问,而所有其他主机都被拒绝访问
http_access allow localhost http_access deny all
在另一个使用这些规则的示例中,teachers 组始终可以访问 Internet。students 组仅在周一至周五午餐时间可以访问
http_access deny localhost http_access allow teachers http_access allow students lunch time http_access deny all
为了提高可读性,请将所有 http_access 选项作为一个块在配置文件 /etc/squid/squid.conf 中指定。
url_rewrite_program PATH使用此选项指定 URL 重写器。
auth_param basic program PATH如果用户必须在代理服务器上进行身份验证,请设置相应的程序,例如 /usr/sbin/pam_auth。首次访问 pam_auth 时,系统会提示用户提供用户名和密码。除此之外,您还需要一个 ACL,以便只有具有有效登录凭据的客户端才能使用 Internet
acl password proxy_auth REQUIRED http_access allow password http_access deny all
在 acl proxy_auth 选项中,使用 REQUIRED 意味着接受所有有效的用户名。REQUIRED 也可以替换为允许的用户名列表。
ident_lookup_access allow ACL_NAME使用此选项启用 ident 请求操作,以查找由类型为 src 的 ACL 定义的所有客户端的每个用户身份。要为所有客户端启用此功能,请将预定义 ACL all 应用为 ACL_NAME。
由 ident_lookup_access 指定的所有客户端都必须运行 ident 守护程序。在 Linux 上,您可以使用 pidentd(软件包 pidentd)作为 ident 守护程序。为了确保只允许成功进行 ident 查找的客户端,请定义相应的 ACL
acl identhosts ident REQUIRED http_access allow identhosts http_access deny all
将 acl identhosts ident 选项设置为 REQUIRED 可确保接受所有有效的用户名。REQUIRED 也可以替换为允许的用户名列表。
使用 ident 会减慢访问时间,因为每个请求都会重复 ident 查找。
透明代理拦截并回答 Web 浏览器的请求,因此 Web 浏览器接收请求的页面而不知道它们来自何处。顾名思义,整个过程对用户是透明的。
使用代理服务器的标准方式如下:Web 浏览器向代理服务器的特定端口发送请求,代理始终提供这些所需的对象,无论它们是否在其缓存中。但是,在以下情况下使用 Squid 的透明代理模式是有意义的
出于安全原因,希望所有客户端都通过代理服务器访问 Internet。
当所有客户端都必须使用代理服务器,无论它们是否知道。
当网络中的代理服务器移动时,但现有客户端需要保留其旧配置。
在 /etc/squid/squid.conf 中,将参数 transparent 添加到 http_port 行。然后您应该有 2 行
http_port 3128⎄ http_port 3128 transparent
重新启动 Squid
>sudosystemctl restart squid
设置防火墙以将 HTTP 流量重定向到 http_proxy 中给出的端口(在上面的示例中,它是端口 3128)。然后重新加载防火墙配置。这假设区域 internal 已分配给您的 LAN 接口。
>sudofirewall-cmd--permanent --zone=internal \ --add-forward-port=port=80:proto=tcp:toport=3128:toaddr=LAN_IP>sudofirewall-cmd--permanent --zone=internal --add-port=3128/tcp>sudofirewall-cmd--reload
将LAN_IP替换为您的 LAN 接口或 Squid 监听的接口的 IP 地址。
要验证一切是否正常工作,请检查 /var/log/squid/access.log 中的 Squid 日志文件。
Squid 缓存管理器 CGI 接口 (cachemgr.cgi) 是一个 CGI 实用程序,用于显示正在运行的 Squid 进程的内存使用统计信息。它还提供了一种方便的方式来管理缓存和查看统计信息,而无需登录服务器。
cachemgr.cgi #确保您的系统上正在运行 Apache Web 服务器。按照第 24 章,Apache HTTP 服务器中的描述配置 Apache。特别是,请参阅24.5 节,“启用 CGI 脚本”。要检查 Apache 是否已在运行,请使用
>sudosystemctl status apache2
如果状态为 inactive,则使用 openSUSE Leap 默认设置启动 Apache
>sudosystemctl start apache2
现在在 Apache 中启用 cachemgr.cgi。为此,请为 ScriptAlias 创建一个配置文件。
在目录 /etc/apache2/conf.d 中创建文件并将其命名为 cachemgr.conf。将以下内容添加到文件中
ScriptAlias /squid/cgi-bin/ /usr/lib64/squid/ <Directory "/usr/lib64/squid/"> Options +ExecCGI AddHandler cgi-script .cgi Require host HOST_NAME </Directory>
将HOST_NAME替换为您要从中访问cachemgr.cgi的计算机的主机名。这只允许您的计算机访问cachemgr.cgi。要允许从任何地方访问,请改用Require all granted。
如果 Squid 和 Apache Web 服务器在同一台计算机上运行,则 /etc/squid/squid.conf 配置文件无需修改。但是,请验证该文件是否包含以下行
http_access allow manager localhost http_access deny manager
这只允许您从您的计算机 (localhost) 访问管理器接口。
如果 Squid 和 Apache Web 服务器运行在不同的计算机上,则需要添加额外的规则以允许 CGI 脚本访问 Squid。为服务器定义一个 ACL(将WEB_SERVER_IP替换为 Web 服务器的 IP 地址)
acl webserver src WEB_SERVER_IP/255.255.255.255
确保配置文件中包含以下规则。请记住,顺序很重要。
http_access allow manager localhost http_access allow manager webserver http_access deny manager
(可选)您可以选择为 cachemgr.cgi 配置一个或多个密码。这还允许您访问更多操作,例如远程关闭缓存或查看有关缓存的更多信息。要启用访问,请使用一个或多个密码为管理器配置 cache_mgr 和 cachemgr_passwd 选项,以及允许的操作列表。
以下示例配置允许在无需身份验证的情况下查看索引页、菜单和 60 分钟平均计数器。该配置还允许使用密码 secretpassword 切换离线模式并禁用所有其他功能。
cache_mgr user cachemgr_passwd none index menu 60min cachemgr_passwd secretpassword offline_toggle cachemgr_passwd disable all
cache_mgr 定义用户名。cache_mgr 定义允许使用哪个密码执行哪些操作。
关键字none和disable是特殊的:none消除了对密码的需求,disable直接禁用功能。
可以在登录 cachemgr.cgi 后最好地查看所有操作列表。要了解操作在配置文件中需要如何引用,请参阅操作页面 URL 中 &operation= 之后的字符串。all 是一个特殊关键字,表示所有操作。
重新加载 Squid 和 Apache 以启用更改
>sudosystemctl reload squid
要查看统计信息,请转到您之前设置的 cachemgr.cgi 页面。例如,它可能是 http://webserver.example.org/squid/cgi-bin/cachemgr.cgi。
选择正确的服务器。如果配置了用户名和密码,请指定它们。单击并浏览可用的统计信息。
Calamaris 是一个 Perl 脚本,用于以 ASCII 或 HTML 格式生成缓存活动报告。它与 Squid 访问日志文件一起使用。此工具不属于 openSUSE Leap 默认安装范围——要使用它,请安装 calamaris 软件包。有关 Calamaris 的更多信息,请访问 https://cord.de/calamaris-english。
以 root 身份登录,然后输入
# cat access1.log [access2.log access3.log] | calamaris OPTIONS > reportfile当使用多个日志文件时,请确保它们按时间顺序排列,较旧的文件排在前面。这可以通过像上面示例中那样逐个列出文件,或者使用 access{1..3}.log 来完成。
calamaris 接受以下选项
-a输出所有可用报告
-w以 HTML 报告形式输出
-l在报告标题中包含消息或徽标
有关选项的更多信息,可以在程序的手册页中找到,使用 man calamaris。
一个典型的例子是
# cat access.log.{10..1} access.log | calamaris -a -w \
> /usr/local/httpd/htdocs/Squid/squidreport.html这会将报告保存到 Web 服务器的目录中。需要 Apache 才能查看报告。
请访问 Squid 的主页 https://squid.org.cn/。在此处可以找到“Squid 用户指南”和有关 Squid 的大量常见问题解答。
Squid 邮件列表可在 https://squid.org.cn/Support/mailing-lists.html 获取。