在我的网络中,我有一些 Ubuntu 机器需要从 下载文件nl.archive.ubuntu.com
。由于多次下载所有内容非常浪费时间,因此我设置了一个 squid 代理来缓存数据。
此代理的另一个用途是重写请求archive.ubuntu.com
或,*.archive.ubuntu.com
因为nl.archive.ubuntu.com
此镜像比美国镜像更快。
这种方法效果很好,但最近安装缓存机后,配置就丢失了。我记得有一个单独的 perl 程序用于处理这种重写。
*.example.com
我如何设置这样一个 Squid 代理来重写主机www.example.com
并缓存后者的结果?
答案1
要将镜像请求从 重写*archive.ubuntu.com
为nl.archive.ubuntu.com
,您需要创建重写助手并配置 squid 以使用该助手来重写请求。
在 squid 配置(例如/etc/squid-deb-proxy/squid-deb-proxy.conf
)中,添加以下行:
url_rewrite_program /etc/squid-deb-proxy/rewrite.pl
您可能已经猜到了,需要在 创建辅助文件/etc/squid-deb-proxy/rewrite.pl
,其中包含:
#!/usr/bin/perl
$mirror = "nl.archive.ubuntu.com";
$| = 1;
while (<>) {
@line = split;
$_ = $line[0];
if (m/^http:\/\/((?:[a-z0-9]+\.)?archive\.ubuntu\.com)\/(.*)/ &&
$1 ne $mirror) {
print "http://" . $mirror . "/" . $2 . "\n";
} else {
print $_ . "\n";
}
}
使其可执行 ( chmod +x /etc/squid-deb-proxy/rewrite.pl
),重新加载 squid 配置,更改应立即可见。您可以通过查看速度或请求仅存在于本地镜像中的某些文件(http://nl.archive.ubuntu.com/rsyncscript.txt
就我而言)来检查这一点。
答案2
有比 Squid 更好的替代品可以满足您的需求。请参阅apt-Cacher NG该产品正是为您的用例而编写的。
如果你的网络中有十几个系统,那么你应该考虑托管一个(私人)Ubuntu镜子。