Поднятие прокси-сервера Squid при помощи Docker за 3 минуты

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

В этой статье мы развернём Squid в Docker-контейнере и настроим его работу.


Шаг 1: Создание конфигурационного файла

Создадим файл squid.conf с базовыми настройками:

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 192.168.100.0/24 192.168.101.0/24
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 allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny to_localhost
http_access allow localnet
http_access deny all

http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log 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

coredump_dir /var/spool/squid/

Объяснение настроек:

  • acl localnet src 192.168.100.0/24 — разрешаем доступ только из локальной сети.
  • http_access allow localnet — разрешаем доступ только локальной сети.
  • http_access deny all — запрещаем всем остальным.
  • access_log /var/log/squid/access.log squid — указываем путь к логам.
  • coredump_dir /var/spool/squid/ — задаём директорию для аварийных дампов.

Шаг 2: Запуск контейнера

Теперь запустим Squid в Docker-контейнере:

docker run --name squid -d --restart=always \
 --publish 3128:3128 \
 --volume $(pwd)/squid.conf:/etc/squid/squid.conf:ro \
 --volume $(pwd)/logs:/var/log/squid \
 --volume $(pwd)/cache:/var/spool/squid \
 sameersbn/squid

Объяснение команд:

  • --publish 3128:3128 — открываем порт 3128.
  • --volume $(pwd)/squid.conf:/etc/squid/squid.conf:ro — монтируем конфигурационный файл в контейнер (read-only).
  • --volume $(pwd)/logs:/var/log/squid — храним логи на хосте.
  • --volume $(pwd)/cache:/var/spool/squid — создаём кеш.

Шаг 3: Проверка работы

Проверим, работает ли прокси:

curl -x http://localhost:3128 -L https://example.com

Если всё настроено правильно, запрос выполнится через прокси-сервер.

Поздравляем! Теперь у вас есть работающий прокси-сервер Squid в Docker. 🚀

1 Comment

  1. aamst

    Спасибо, годная статья

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *