В моей сети есть несколько машин с Ubuntu, которым нужно загружать файлы с nl.archive.ubuntu.com
. Поскольку загружать все по несколько раз - это пустая трата времени, я установил прокси-сервер Squid для кэширования данных.
Другой способ использования этого прокси - перезапись запросов для archive.ubuntu.com
или *.archive.ubuntu.com
к nl.archive.ubuntu.com
потому что это зеркало быстрее американских зеркал.
Это сработало довольно хорошо, но после недавней установки моей кэширующей машины конфигурация была потеряна. Я помню, что для обработки этой перезаписи у меня была отдельная программа на Perl.
Как мне настроить такой прокси-сервер Squid, который перезаписывает хост *.example.com
к www.example.com
а результат последнего кешировать?
Чтобы перезаписать зеркальные запросы от *archive.ubuntu.com
к nl.archive.ubuntu.com
, вам необходимо создать помощник перезаписи и настроить 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
в моем случае).
Есть лучшие альтернативы, чем Squid для ваших требований. Увидеть Apt-Cacher NG который был написан именно для вашего варианта использования.
И если в вашей сети более десятка систем, вам следует подумать о размещении (частной) Ubuntu зеркало.