如何将 *.example.com 重写为 www.example.com?

如何将 *.example.com 重写为 www.example.com?

在我的网络中,我有一些 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.comnl.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镜子

相关内容