Введение
Squid — это кэширующий и перенаправляющий HTTP веб-прокси. Он имеет широкий спектр применения, включая ускорение работы веб-сервера за счет кэширования повторяющихся запросов, кэширование Всемирной паутины (WWW), системы доменных имен (DNS) и других сетевых обращений для группы пользователей, совместно использующих сетевые ресурсы, а также повышение безопасности путем фильтрации трафика. Хотя Squid в основном используется для HTTP и протокола передачи файлов (FTP), он также включает ограниченную поддержку других протоколов, таких как Internet Gopher и Secure Sockets Layer (SSL). Squid является свободным программным обеспечением, распространяемым по лицензии GNU General Public License.
Squid is a caching and forwarding HTTP web proxy. It has a wide variety of uses, including speeding up a web server by caching repeated requests, caching World Wide Web (WWW), Domain Name System (DNS), and other network lookups for a group of people sharing network resources, and aiding security by filtering traffic. Although used for mainly HTTP and File Transfer Protocol (FTP), Squid includes limited support for several other protocols including Internet Gopher, Secure Sockets Layer (SSL), Squid is free software released under the GNU General Public License.
История
Squid изначально был разработан как объектный кэш Harvest, часть проекта Harvest в Университете Колорадо в Боулдере. Дальнейшая работа над программой была завершена в Калифорнийском университете в Сан-Диего и финансировалась двумя грантами Национального научного фонда. Дуэйн Весселс создал ответвление от "последней предкоммерческой версии Harvest" и переименовал его в Squid, чтобы избежать путаницы с коммерческим ответвлением под названием Cached 2.0, которое стало NetCache. Версия Squid 1.0.0 была выпущена в июле 1996 года. В настоящее время разработка Squid ведется почти исключительно усилиями волонтеров. В октябре 2023 года стало известно, что Squid по-прежнему имеет 35 неисправленных уязвимостей в системе безопасности, которые не были устранены в течение двух с половиной лет после их первоначального обнаружения.
Основные функции
После установки прокси-сервера Squid веб-браузеры можно настроить на его использование в качестве прокси-сервера HTTP, что позволяет Squid сохранять копии полученных документов. При повторных запросах тех же документов это может сократить время доступа и снизить потребление пропускной способности. Это часто полезно для интернет-провайдеров, чтобы повысить скорость обслуживания клиентов, и для локальных сетей, использующих общее интернет-соединение. Поскольку серверы кэширования контролируются оператором веб-сервиса, кэширующие прокси не обеспечивают анонимность пользователя и их не следует путать с анонимизирующими прокси. Клиентская программа (например, браузер) может либо явно указать прокси-сервер, который она хочет использовать (обычно для клиентов интернет-провайдеров), либо использовать прокси без дополнительной настройки – "прозрачное кэширование". В этом случае все исходящие HTTP-запросы перехватываются Squid, и все ответы кэшируются. Последнее обычно используется в корпоративных сетях (где все клиенты находятся в одной локальной сети) и часто вызывает проблемы с конфиденциальностью, упомянутые выше. Squid имеет некоторые функции, которые могут помочь анонимизировать соединения, например, отключение или изменение определенных полей заголовков в HTTP-запросах клиента. Настройка этих функций и их действие зависят от администратора компьютера, на котором работает Squid. Пользователи, запрашивающие страницы через сеть, использующую Squid в прозрачном режиме, могут не знать, ведется ли запись информации об их запросах. По крайней мере, в организациях Великобритании пользователей должны информировать о мониторинге компьютеров или интернет-соединений.
Обратная прокси
Вышеуказанная настройка, кэширование содержимого неограниченного количества веб-серверов для ограниченного числа клиентов, является классической. Другая настройка – "обратный прокси" или "ускорение веб-сервера" (с использованием). В этом режиме кэш обслуживает неограниченное количество клиентов для ограниченного числа или только одного веб-сервера. Например, если slow.example.com является "реальным" веб-сервером, а www.example.com – сервером кэша Squid, который его "ускоряет", то при первом запросе любой страницы с www.example.com кэш-сервер получит фактическую страницу с slow.example.com, а последующие запросы будут получать сохраненную копию непосредственно с ускорителя (в течение настраиваемого периода, после чего сохраненная копия будет удалена). В результате, без каких-либо действий со стороны клиентов, трафик на исходный сервер уменьшается, что приводит к снижению нагрузки на процессор и память, а также к уменьшению потребности в пропускной способности. Однако это означает, что исходный сервер не сможет точно отчитываться о своем трафике без дополнительной настройки, поскольку все запросы будут казаться исходящими от обратного прокси. Для адаптации отчетности на исходном сервере можно использовать HTTP-заголовок X-Forwarded-For, передаваемый обратным прокси, чтобы получить реальный IP-адрес клиента. Один сервер Squid может одновременно функционировать как обычный кэш и как обратный прокси. Например, компания может размещать свой веб-сайт на веб-сервере, а сервер Squid выступать в качестве обратного прокси между клиентами (посетителями сайта извне) и веб-сервером. Тот же сервер Squid может также работать как классический веб-кэш, кэшируя HTTP-запросы от клиентов внутри компании (например, сотрудников, выходящих в интернет со своих рабочих станций), тем самым ускоряя доступ в интернет и снижая требования к пропускной способности.
Пределы среднего радиуса действия
Например, одной из особенностей протокола HTTP является возможность ограничения запроса диапазоном данных в запрашиваемом ресурсе. Эта функция широко используется видеостриминговыми сервисами, такими как YouTube, чтобы, если пользователь перешел к середине индикатора прогресса видео, сервер мог начать передавать данные с середины файла, а не отправлять весь файл с начала, заставляя пользователя ждать загрузки предыдущих данных. Частичные загрузки также широко применяются в Microsoft Windows Update, позволяя чрезвычайно большим пакетам обновлений загружаться в фоновом режиме и приостанавливаться на середине загрузки, если пользователь выключил компьютер или отключился от Интернета. Формат загрузки Metalink позволяет клиентам выполнять сегментированную загрузку, отправляя частичные запросы и распределяя их между несколькими зеркалами. Squid может пересылать частичные запросы на исходный веб-сервер. Для быстрого обслуживания частичного запроса из кэша, Squid требует наличия полной копии этого же объекта в своем хранилище. Если пользователь, использующий прокси для просмотра видео, переходит на другую страницу до завершения загрузки видео, Squid не сохраняет частичную загрузку для повторного использования и просто отбрасывает данные. Для продолжения и кэширования таких загрузок требуется специальная настройка.