Перейти к содержимому
Типы прокси 4 мин чтения 1 просмотров

Squid

Squid: кэширующий прокси-сервер

Squid — это высокопроизводительный кэширующий прокси-сервер, который поддерживает HTTP, HTTPS, FTP и другие протоколы, предназначенный для сокращения времени отклика и экономии пропускной способности за счет сохранения часто запрашиваемого контента.

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

Принципы работы кэширования

Кэширование в Squid базируется на нескольких ключевых механизмах:

  • HTTP-заголовки: Squid анализирует заголовки HTTP (например, Cache-Control, Expires, Last-Modified, ETag) для определения возможности кэширования ресурса и его срока годности.
  • Эвристическое кэширование: Если заголовки кэширования отсутствуют, Squid может использовать эвристические алгоритмы для оценки потенциального срока годности объекта, основываясь на заголовке Last-Modified.
  • Условные запросы: Для проверки актуальности кэшированного контента Squid использует условные запросы (If-Modified-Since, If-None-Match), отправляя их целевому серверу. Если контент не изменился, сервер отвечает статусом 304 Not Modified, и Squid возвращает кэшированную копию.

Преимущества использования Squid

Использование Squid предоставляет ряд существенных преимуществ:

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

Режимы работы прокси

Squid может функционировать в нескольких режимах:

Прямой прокси (Forward Proxy)

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

Сценарии использования:
* Корпоративные сети для контроля и оптимизации доступа в интернет.
* Домашние сети для кэширования и фильтрации.

Прозрачный прокси (Transparent Proxy)

В этом режиме клиенты не знают о существовании прокси-сервера. Весь трафик перенаправляется на Squid сетевым оборудованием (например, маршрутизатором) без изменения настроек на клиентских машинах.

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

Для настройки прозрачного прокси требуется перенаправление HTTP-трафика (порт 80) на порт Squid с помощью правил фаервола (например, iptables).

# Пример правила iptables для прозрачного прокси
# Предполагается, что Squid слушает на порту 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Обратный прокси (Reverse Proxy)

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

Сценарии использования:
* Ускорение работы веб-сайтов путем кэширования статического контента.
* Балансировка нагрузки между несколькими веб-серверами.
* Дополнительный уровень безопасности для веб-серверов.

Основные конфигурационные директивы (squid.conf)

Конфигурация Squid осуществляется через файл squid.conf, который обычно расположен в /etc/squid/squid.conf или /usr/local/squid/etc/squid.conf.

Настройка портов

http_port 3128 # Стандартный порт для прямого прокси
# http_port 3128 intercept # Для прозрачного прокси
# http_port 80 vhost # Для обратного прокси

Хранилище кэша

Директива cache_dir определяет, где и как Squid будет хранить кэшированные объекты.

cache_dir ufs /var/spool/squid 10000 16 256

| Параметр | Описание | UFS | Директория для хранения кэша. |
| /var/spool/squid | Путь к папке, где будут храниться кэшированные файлы. |
| 10000 | Максимальный размер кэша в мегабайтах (10 ГБ). |
| 16 | Количество поддиректорий первого уровня. |
| 256 | Количество поддиректорий второго уровня в каждой из 16 первых. |

Для инициализации кэш-директорий после изменения cache_dir или первой установки:

sudo squid -z

Управление доступом (ACLs и http_access)

Squid использует списки контроля доступа (ACLs) для определения групп клиентов, ресурсов или других параметров. Директивы http_access затем используют эти ACLs для разрешения или запрета доступа.

acl localnet src 192.168.1.0/24 # Пример ACL: локальная подсеть
acl blocked_sites dstdomain .badsite.com # Блокировка домена
acl office_hours time M T W H F 09:00-18:00 # Время работы офиса
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access deny manager

http_access deny blocked_sites
http_access allow localnet
http_access deny all # Запрет всего остального

Порядок директив http_access имеет значение: Squid обрабатывает их сверху вниз до первого совпадения.

Обновление кэша (refresh_pattern)

Директивы refresh_pattern управляют тем, как часто Squid проверяет актуальность кэшированных объектов.

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

| Параметр | Описание |
| min_refresh_time | Минимальное время, в течение которого объект считается свежим (в минутах). |
| percent_fresh | Процент от времени между Last-Modified и текущим моментом, в течение которого объект считается свежим.

Обновлено: 03.03.2026
Назад к категории

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира