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. 🚀
Спасибо, годная статья