Squid (简体中文)

From ArchWiki

来自 Squid 官方网站

Squid 是一个 Web 缓存代理,支持 HTTP, HTTPS, FTP, 以及更多。它通过缓存与重用经常请求的web页面,减少带宽使用同时提升了响应时间。Squid 具有可扩展的访问控制功能,同时可以使服务器加速。它运行在 Unix 和 Windows 中,采用 GNU GPL 协议发布。

尽管 squid 在大型公司和学校中工作的很好,它也可以为个人家庭用户使用。

安装

安装位于官方软件仓库squid

配置

默认设置下,缓存目录会创建于 /var/cache/squid,同时正确的权限会被同时设置好。然而,为了更好的控制,我们需要深入 /etc/squid/squid.conf.

所有的配置项都有注释,但是如果你想去掉注释的话,你可以运行:

sed -i "/^#/d;/^ *$/d" /etc/squid/squid.conf

下面的选项会对你有用。如果你没有这些选项,你可以添加进去。

  • http_port - 设置 Squid 绑定的代理端口。你可以将 Squid 绑定到多个端口,使用多个 http_port 行。默认情况下,Squid 绑定到 3128 端口。
http_port 3128
http_port 3129
  • http_access - 这是访问控制列表,即谁被允许使用这个代理。默认只有 localhost 被允许访问这个代理。作为测试目的,你可以改变这个选项 http_access deny allhttp_access allow all,这会允许所有人链接到你的代理。如果你想仅仅允许子网内访问,你可以使用:
acl ip_acl src 192.168.1.0/24
http_access allow ip_acl
http_access deny all
  • cache_mgr - 这是缓存管理员的 email 地址。
cache_mgr [email protected]
  • shutdown_lifetime - 指定当 squid 的 rc.d 脚本请求停止的时候等待的时间。如果你在你的桌面电脑上运行 squid,你也许需要设成短一点的时间值。
shutdown_lifetime 10 seconds
  • cache_mem - 这是你想让 squid 使用内存而不写入硬盘的内存量。Squid 的总内存使用量会超过这个值!默认这个值是 8MB,所以如果你有很多内存的话,你也许想增加这个值。
cache_mem 64 MB
  • visible_hostname - 可以在状态/错误信息中看到的 hostname。
visible_hostname cerberus
  • cache_peer - 如果你想让 Squid 穿过另一个代理服务器,而不是直接连到 Internet,你需要在这里指定。
  • login - 如果上层代理需要认证的话使用这个选项。
  • never_direct - 如果你设定了上面的选项的话,可以告诉缓存不要直接连接到 Internet 请求页面。
cache_peer 10.1.1.100 parent 8080 0 no-query default login=user:password
never_direct allow all
  • maximum_object_size - 这是缓存部件的最大大小。默认这个值很小 (我认为是 256KB),所以如果你有很多磁盘空间,你需要将这个值增大到一个合理的值。
maximum_object_size 10 MB
  • cache_dir - 这是你的缓存文件夹,存储缓存文件的位置。有很多个选项,但是格式大概是这样子:
cache_dir diskd <directory> <size in MB> 16 256

所以,在一个学校的代理服务器中:

cache_dir diskd /cache0 200000 16 256

如果你改变了默认的缓存文件夹,你需要在启动 squid 前为文件夹设置合适的权限。否则会无法创建缓存文件夹并且停止运行。

启动

配置完成之后,你需要检查一下配置文件是否正确:

# squid -k check

然后创建缓存目录:

# squid -z

最后你可以启动 Squid:

# systemctl start squid

开机启动:

# systemctl enable squid