Назад | Перейти на главную страницу

Как мне переписать * .example.com на www.example.com?

В моей сети есть несколько машин с 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 зеркало.