Squid — кроссплатформенный прокси с открытым исходным кодом

Производительность — один из самых важных аспектов хорошего веб-сайта. Доказано, что более длительное время загрузки приводит к тому, что посетители отворачиваются от сайтов еще до того, как эти порталы успевают убедить пользователей остаться на них благодаря качеству своего контента. Будучи жизненно важным компонентом современного пользовательского опыта, скорость загрузки страниц является важным фактором ранжирования Google с 2010 года. Поэтому операторам сайтов следует убедиться, что они хорошо разбираются в этой теме, и оптимизировать скорость своего сайта. У пользователей есть возможность сжать изображения (Compress images with the help of free tools), объединить и оптимизировать файлы кода или уменьшить количество запросов.

Еще один подход, который обеспечит вашему веб-серверу большее облегчение, заключается в использовании обратных прокси-серверов. Этот программный компонент действует как интерфейс между браузерами и веб-серверами, обрабатывая запросы браузера через прокси и самостоятельно доставляя кэшированное статическое содержимое без обращения к веб-серверу. Это особенно эффективно, когда серверы должны динамически создавать страницы на сервере при каждом запросе, но не должны постоянно их менять. Одним из самых популярных решений для настройки такого кэш-прокси является бесплатная программа Squid.

Что такое Squid?

Выпущенная в 1998 году программа прокси-сервера, Squid, была первоначально выпущена разработчиком Дуэйном Весселом как бесплатный спин-офф ‘Harvest object cache’. В то же время была выпущена и коммерческая версия под названием ‘NetCache’, разработка которой с тех пор была прекращена. Squid доступен под лицензией GNU General Public License и поддерживает протоколы HTTP, HTTP/2, HTTPS и FTP среди прочих вариантов. Прокси-серверы Squid работают на большинстве обычных операционных систем, таких как различные дистрибутивы Linux, Mac OS X или Windows. Управление прокси-сервером может осуществляться либо через соответствующий инструмент командной строки, либо через графический интерфейс пользователя, например, GAdmin SQUID или SquidMan.

Тысячи операторов веб-сайтов используют возможности кэширования прокси-серверов с открытым исходным кодом. Например, Wikipedia уже много лет использует прокси Squid для доставки своего контента и разгрузки своей базы данных и веб-серверов. Кроме того, благодаря поддержке HTTPS, Squid способен брать на себя построение защищенных SSL-соединений. Различные интернет-провайдеры по всему миру используют Squid в качестве прозрачного прокси для обеспечения оптимизированного доступа в интернет. Конечно, программное обеспечение с открытым исходным кодом можно использовать и для работы общего прямого прокси для отдельного клиента; это позволит скрыть IP-адрес пользователя и обеспечит дополнительную защиту пакетного фильтра брандмауэра.  В качестве альтернативы Squid также способен фильтровать независимые пакеты с помощью расширения SquidGuard.

Почему вы должны использовать прокси-сервер Squid

С самой первой версии Squid является продуктом с открытым исходным кодом, поэтому лицензия не требуется, а исходный текст также находится в свободном доступе. Программное обеспечение можно скачать бесплатно, а также настроить под различные нужды пользователей. Однако это оказывается необходимым лишь в редких случаях: десятилетний опыт сотрудников проекта Squid, которые поддерживают и развивают программу на добровольной основе в течение многих лет, показывает универсальность и оптимизацию скорости, которую предлагает Squid. Программа также убедительна для частного использования благодаря наличию определяемых списков контроля доступа. С одной стороны, можно заблокировать доступ к определенному контенту или уменьшить полезную пропускную способность, а с другой стороны, пользователи могут легко анализировать используемые прокси-серверы, чтобы контролировать поток данных.

Важной характеристикой Squid является его высокая гибкость, которая действительно оправдывает себя в больших, более сложных сетях. После этого можно создать кэш-прокси, используя несколько прокси-серверов Squid и распределяя запросы между ними. Такая организация разгружает отдельные компоненты и значительно повышает надежность системы. Как и в случае с сетью доставки контента, отдельные серверы обратного прокси могут быть расположены в разных местах.

Как работает поведение кэширования в прокси-программах

Перечисленные функции безопасности и контроля, которые могут быть реализованы с помощью этой системы, позволяют понять, насколько универсальным может быть программное обеспечение. Во-первых, Squid является привлекательным вариантом благодаря своей основной функции прокси-сервера для кэширования данных. Для того чтобы гарантировать актуальность и доступность данных, Squid регулярно вычисляет их состояние, при этом возможны два результата: проверяемый объект может быть либо все еще актуальным (свежим), либо уже неактуальным (несвежим). Чтобы избежать необходимости проверять весь набор данных, алгоритм рассчитывает, как часто каждый отдельный объект требует проверки. В данном случае при оценке учитывается следующая информация:

LM последнее изменение; информация в заголовке о дате, когда было сделано последнее изменение.
EX expire; информация заголовка, которая предоставляет подробную информацию о сроке действия объекта
СЕЙЧАС Текущая дата
OBJ_Date Дата хранения в кэше Squid и дата последнего изменения
MIN Минимальная продолжительность кэша
MAX Максимальная продолжительность кэша
PERCENT Коэффициент продолжительности
Obj_Age Описывает время, прошедшее с момента нахождения объекта в кэше (NOW — OBJ_Date)
LM_Age Возраст объекта на момент нахождения в кэше(OBJ_Date — LM)
LM_FACTOR Коэффициент возраста (Obj_Age / LM_Age)

До даты X объект в кэше остается действительным:

X = OBJ_Date + (LM_Age * PERCENT)

По следующей ссылке показан алгоритм кэширования Squid. Проще говоря, алгоритм предназначен для следующего: прокси-сервер Squid чаще проверяет состояние объекта, когда сам объект чаще подвергается изменениям. Здесь самым ранним периодом проверки является MIN, то есть назначенная минимальная продолжительность в кэше. Когда достигается максимальная продолжительность MAX, Squid должен связаться с веб-сервером. Для этого прокси-сервер отправляет GET-запрос с записями if-Modified-Since, включая OBJ_Date. Веб-сервер проверяет статус объекта и затем пересылает его.

  • Код статуса 304 (не изменен), если объект не изменен.
  • Или статус 200 (OK), когда объект неизменен.

Это означает, что данные будут передаваться только тогда, когда что-то действительно изменилось.

Какие требования к аппаратному обеспечению предъявляет Squid?

Если вы хотите использовать обратный прокси-сервер Squid для своего веб-сервера, то вам следует сначала убедиться, что у вас есть необходимые аппаратные структуры. Кэширующий прокси не предъявляет особых требований к вычислительной мощности. Вместо этого ему требуется соответствующий объем рабочей памяти и памяти жесткого диска. В настоящее время оба компонента легко доступны, поэтому их приобретение — это вопрос не столько цены, сколько правильного расчета. Рассчитывайте потребности в связи с вашим веб-проектом и учитывайте потенциал роста. При покупке оборудования убедитесь, что вы выбираете современные компоненты, такие как SDD-накопители, которые отличаются быстрым временем доступа и поэтому позволяют максимально оптимизировать скорость работы веб-сайта.

Установка Squid — как это работает

Как правило, у вас есть два варианта установки программного обеспечения Squid на вашу систему. Первый вариант требует, чтобы Squid находился в управлении пакетами используемого вами дистрибутива. Если это так, то установка прокси-программы осуществляется по известной схеме через командную строку. Под Ubuntu соответствующей командой является:

sudo apt-get update
sudo apt-get install squid

Второй путь установки осуществляется путем загрузки установочного файла. Он может быть распакован и скомпилирован обычными методами (как в версиях 3.5.20):

tar xzf squid-3.5.20.tar.gz
cd squid-3.5.20
./configure
make

С помощью команды:

make install

После завершения этого шага запустите установку

Неофициальный готовый установочный пакет MSI доступен для систем Windows начиная с версии 3.5; просто дважды щелкните после загрузки, чтобы запустить процесс.

Для каждой опубликованной стабильной версии существует версия разработки, а также бета-версия, содержащая новые возможности. Обе версии используются в первую очередь для тестирования данной функции, поэтому пользователям следует прибегать к ним только в том случае, если они полностью разобрались в программе Squid.

Как настроить прокси-сервер squid для увеличения ускорения веб-сайтов

Конфигурационный файл squid.conf позволяет пользователям определить тип прокси-сервера, в качестве которого должен выступать Squid. Обычно они находятся в каталоге /etc или /usr/local/squid/etc, а также в каталоге, который вы определили при установке. Существуют различные предопределенные настройки, которые обозначаются в строках комментариев, начинающихся с хэш-знаков (#). В следующих параграфах мы собрали некоторые важные опции, которые понадобятся вам для настройки Squid.

Опции сети: #NETWORK OPTIONS

В этой области пользователи могут настроить IP-адреса и порты, которые имеют значение для работы серверов Squid. Следующие записи предназначены для кэш-прокси.

http_port

Синтаксис: http_port [имя хоста или IP-адрес:]номер порта

Описание: определяет порт, на котором Squid прослушивает HTTP-запросы. Обычно здесь указывается порт 3128. Если недоступны ни имена хостов, ни IP-адреса, то настройки действительны для всех встроенных IP-адресов. Также возможен ввод нескольких портов.

Пример: http_port 192.168.0.1:3128

https_port

Синтаксис: https_port [IP-адреса:]Номер порта cert=путь к SSL-сертификату [key=путь к закрытому SSL-ключу] [опции]

Описание: информация о порте HTTPs требуется, если прокси-сервер Squid должен принимать соединения SSL или TLS. Требуется информация о пути к применяемому сертификату (в формате PEM). Если не указан закрытый SSL-ключ, Squid автоматически предполагает, что PEM-файл уже содержит ключ. Параметры параметров позволяют ввести дополнительные опции в соответствии с документацией OpenSSL.

Icp_port

Синтаксис: icp_port Номер порта

Описание: здесь вы можете ввести порт, через который Squid ICP получает запросы (протокол Internet Cache) или UDP-пакеты. Один параметр необходим только в том случае, если вы используете несколько прокси-серверов, которые должны взаимодействовать друг с другом. Стандартный порт — 3130; для отключения функции введите параметр 0.

Пример: icp_port 3130

Параметры кэширования: #ОПЦИИ, ВЛИЯЮЩИЕ НА РАЗМЕР КЭША

Опции кэширования позволяют пользователям, помимо прочего, определить, следует ли использовать рабочую память прокси-сервера Squid для кэширования и/или какой ее объем. Он также может быть использован для определения минимального и максимального размера объектов и общего поведения кэширования.

cache_mem

Синтаксис: cache_mem рабочая память в МБ

Описание: с помощью cache_mem вы можете определить размер зарезервированной основной памяти для транзитных объектов, горячих объектов и объектов с отрицательным кэшированием. Учитывая, что данные располагаются блоками по 4 КБ, указанное значение также должно быть кратно 4 КБ. Убедитесь, что вы путаете этот параметр с абсолютными потребностями Squid в памяти, которые не регулируются подобным образом.

Пример: cache_mem 256 МБ

максимальный_размер_объекта

Синтаксис: maximum object_size размер объекта в KB/MB

Описание: эта запись дает Squid информацию о размере объекта, который будет кэшироваться. Минимальное ограничение на размер можно определить с помощью minimum_object_size.

Пример: maximum_object size 4 MB

Записи для кэширования и каталогов logfile: #ПУТИ К ЛОГФАЙЛАМ И КАТАЛОГАМ КЭШИРОВАНИЯ

Помимо записей о портах и поведении кэширования, серверу squid необходима информация о директории, в которую следует кэшировать содержимое и случайные данные журнала.

cache_dir

Синтаксис: cache_dir тип каталога путь к каталогу место хранения объем каталога

Описание: определить каталог для кэширования, а также его максимальный объем хранения в мегабайтах и количество каталогов и подкаталогов с помощью cache_dir. По умолчанию установленный тип каталога — ufs. Обычно эта опция выключена и должна быть активирована повторно.

Пример: cache_dir ufs/usr/local/squid/var/cache/squid 100 16 256

Кэш_лог

Синтаксис: cache_log путь к файлу

Описание: определяет место хранения лог-файла вашего прокси-сервера squid, в который записывается информация о поведении программы.

Пример: cache_log /usr/local/squid/var/logs/cache.log

Параметры доступа: # КОНТРОЛЬ ДОСТУПА

Наконец, вам понадобятся четко определенные списки доступа для портов, используемых Squid. Здесь ключевыми являются следующие два параметра:

acl

синтаксис: acl listname list type argument

Описание: здесь у вас есть возможность создать подробный список доступа для всех HTTP, ICP иTCP соединений. Для более точного обзора типов и опций обратитесь к официальному онлайн-руководству.

Пример: acl all src 0.0.0.0

http_access

Синтаксис: http_access allow|deny [!] listname

Описание: разрешить или запретить доступ к порту HTTP с помощью ранее определенных списков доступа. Восклицательный знак в начале означает, что применяется распределение для всех соединений, которые не принадлежат к названному списку.

Пример: http_access deny!SSL_portsПростое решение: кэш-прокси.

Оцените статью
cdelat.ru
Добавить комментарий