Библиотека сайта rus-linux.net
Приемы работы в Ubuntu.
Глава 10: Сервер малого офиса / домашнего офиса
Оригинал: "Ubuntu Hacks: Chapter 10 - Small Office/Home Office Server"
Авторы: Кайл Ранкин, Джонатан Оксер, Билл Чайлдерс (Kyle Rankin, Jonathan Oxer, Bill Childers)
Дата публикации: June 2006
Перевод: Н.Ромоданов
Дата перевода: ноябрь 2010 г.
Совет # 98: Создаем кэширующий прокси-сервер
Если у вас в сети несколько компьютеров, вы можете с помощью локального прокси-сервер сэкономить трафик и улучшить производительность браузера.
Прокси-сервер находится в вашей сети; он перехватывает запросы к файлам HTML, файлам CSS и изображениям, и сохраняет их локальные копии на случай, если другой пользователь захочет получить те же самые файлы. Если несколько пользователей посещают один и тот же сайт, прокси-сервер сэкономит трафик за счет того, что не будет скачивать объекты в вашу локальную сеть индивидуально для каждого пользователя, а производительность будет улучшена, поскольку объекты будут взяты из локальной сети, а не из интернета.
Сервер Squid Web Proxy Cache (http://www.squid-cache.org) является полнофункциональным кэширующим прокси-сервером для Linux и Unix.
Базовая настройка Squid
Установите кэширующий прокси-сервер Squid:
$ sudo apt-get install squid
В процессе установки автоматически будет создана структура директориев /var/spool/squid, куда для запоминания будут загружаться скачанные объекты. Старые объекты будут автоматически стираться, но если вы будете постоянно пользоваться прокси-сервером, то он может занять большой объем дискового пространства, поэтому убедитесь, что у вас достаточно дисковой памяти.
Конфигурационный файл /etc/squid/squid.conf, используемый в Squid по умолчанию, является одним из самых длинных и недостаточно прокомментированных файлов, которые существовали за всю историю программного обеспечения: более 3000 строк, с пространными объяснениями для каждого из возможных вариантов конфигурации. В нем легко заблудиться, так что для начала давайте укажем несколько базовых параметров, которые вам нужно найти.
Вблизи строки с номером 1890 есть несколько параметров, которые могут подставить ножку начинающим администраторам Squid. В Squid реализованы списки управления доступом (ACL - Access Control Lists), в которых определяется, кому разрешается подключаться через прокси. По умолчанию, единственный, кто может подключиться, это - localhost:
#acl our_networks src 192.168.1.0/24 192.168.2.0/24 #http_access allow our_networks http_access allow localhost
Чтобы позволить подключаться машинам, имеющимся в вашей локальной сети, вам нужно раскомментировать определение our_networks
, добавить диапазон адресов IP вашей локальной сети, и раскомментировать строку, которая разрешит вашей сети (our_networks
ACL) использовать прокси. В итоге должно быть, вероятно, что-то вроде следующего:
acl our_networks src 192.168.0.0/24 http_access allow our_networks http_access allow localhost
Затем перейдите примерно на строку 53, чтобы найти параметр http-port
:
# http_port 3128
Этот параметр указывает порт, который будет прослушивать Squid. Можно использовать порт 3128, указываемый по умолчанию, но некоторые прокси работают на порту 8080 или даже на порту 80, так что вам может потребоваться изменить значение и раскомментировать этот параметр.
Как только вы сделаете все ваши изменения, перезапустите Squid:
$ sudo /etc/init.d/squid restart
Перезапуск Squid может потребовать некоторого времени для активизации прокси, поскольку он ждет подключений клиентов, которые были закрыты перед перезапуском.
Вы можете протестировать прокси: подключитесь к нему вручную, измените для этого конфигурацию вашего браузера Firefox. В Firefox, перейдите по Edit → Preferences → General → Connection Settings (Редактирование → Настройки → Общие → Настройки подключения) выберите "Manual proxy configuration" ("Настройка прокси вручную") и задайте подробную настройку для вашего прокси-сервера так, как показано на рис.10-1.
Рис.10-1. Настройка прокси в браузере
Чтобы увидеть активность, проходящую через прокси, перейдите к концу журнального файла Squid, а затем попробуйте получить доступ к веб-сайту. Squid сохранит доступ к сайту в журнале /var/log/squid, так что запустите:
$ sudo tail -f /var/log/squid/access.log
чтобы просмотреть конец журнального файла. Если веб страница загрузится нормально и вы также увидите об этом запись, то, примите поздравления, Squid работает!
Отчеты о трафике через прокси
Журнальные файлы Squid можно без всяких проблем читать с помощью популярной программы анализа веб-серверов Webalizer. Установите Webalizer:
$ sudo apt-get install webalizer
Теперь воспользуйтесь вашим любимым текстовым редактором, откройте файл /etc/webalizer.conf и поищите приблизительно на строке 36 следующую запись:
LogFile /var/log/apache/access.log.0
Замените ее на ссылку на циклически обновляемый журнальный файл Squid:
LogFile /var/log/squid/access.log.0
Приблизительно в строке 42 вы увидите параметр, в котором задан директорий, где будет создаваться отчет. Если на вашем прокси-сервере установлен сервер Apache с настройками, задаваемыми по умолчанию, то для Webalizer вам не нужно менять настройки, заданные по умолчанию, но если ваш корневой директорий для веб-документов находится в нестандартном месте или у вас уже генерируется отчет для вашего веб сервера, то вам нужно будет поменять настройки:
OutputDir /var/www/webalizer
Если вы только что установили и проверили Squid, у вас, вероятно, еще не было обновлений журнального файла, так что выполните обновление вручную:
$ sudo /etc/init.d/squid stop
Выходной директорий автоматически не создается, его вам нужно будет создать вручную:
$ sudo mkdir /var/www/webalizer
Теперь запустите Webalizer:
$ sudo webalizer
Когда он закончит работу, в директории /var/www/webalizer вы увидите кучу файлов, и вы можете просмотреть отчет, если в адресной строке браузера укажите http://yourcache.example.com/webalizer/.
Пиринговое соединение прокси-серверов
Если ваш провайдер предоставляет прокси-сервер, вы можете связать его со своим прокси-сервером Squid. Ваши локальные клиенты будут подключаться к вашему прокси-серверу, который, в свою очередь, будет использовать прокси-сервер вашего провайдера. В конфигурационном файле Squid перейдите приблизительно к строке 190 и добавьте строку следующего вида:
cache_peer cache.example.com parent 3128 0 no-query
где cache.example.com
является адресом кэша вашего провайдера. Параметр parent
указывает прокси, чтобы рассматривать эту строку как указание на подключение в сеть интернет, а не на подключение в локальной сети. Возможно, вам придется изменить настройку 3128
, если ваш провайдер использует для прокси-сервера другой порт. Значения 0
и no-query
сообщают прокси-серверу не использовать для подключения к кэшу провайдера протокол ICP (Internet Cache Protocol). Протокол ICP обычно используется для распределения нагрузки на группу прокси-серверов, когда параллельно используются несколько прокси-серверов, что позволяет им очень быстро обмениваться состояниями кэша друг-друга.
Перезапустите Squid, снова посмотрите конец журнального файла и попробуйте получить доступ к популярному сайту. Если в кэше прокси-сервер вашего провайдера уже есть элементы сайта, то вы должны увидеть в журнальном файле вашего прокси сообщение PARENT_HIT
, указывающее об этом.
Назад | Оглавление | Вперед |