Подключение службы ответов HTML по ICAP к Squid 7
Подключите существующую службу ответов ICAP к прямому прокси Squid 7 и решите, какие ответы она должна преобразовывать.
Для прямого прокси Squid, которому нужно преобразовать ответ HTML, используйте путь адаптации. Squid обрабатывает прокси-запрос браузера; служба ответов ICAP выполняет преобразование тела и возвращает адаптированное сообщение HTTP.
Это даёт преобразованию определённое место в жизненном цикле запроса. Правило заголовка ответа не может заменить синтаксический анализатор HTML, а отдельный фильтр веб-сервера не обрабатывает автоматически трафик, проходящий через Squid.
Подключение службы ответов
Для сборки Squid 7 с поддержкой ICAP и существующей совместимой службы форма конфигурации такова:
acl adaptation_clients src 192.0.2.0/24
icap_enable on
icap_service html_editor respmod_precache bypass=0 icap://127.0.0.1:1344/modify
adaptation_access html_editor allow adaptation_clients
adaptation_access html_editor deny all
Диапазон клиентов и URI службы — примеры. URI должен указывать на реальную службу ICAP, реализующую преобразование ответа; объявление /modify её не создаёт. Фрагмент дополняет существующий слушатель прокси и управление доступом.
respmod_precache выбирает адаптацию ответов в точке перед кэшем. adaptation_access выбирает транзакции для этой службы. Параметр bypass=0 означает, что Squid не может молча пропустить эту службу, когда применимая транзакция сталкивается с отказом службы. Выбирайте такое поведение при отказе в зависимости от того, обязательно ли преобразование.
Директивы адаптации зависят от версии. В частности, эти справочники конфигурации перечисляют интерфейсы службы ICAP и доступа к адаптации для Squid 7 и более ранних поддерживаемых веток и помечают их как недоступные в Squid 8. Рассматривайте фрагмент как пример для Squid 7, а не копируйте его в произвольный выпуск.
Дайте службе точный контракт преобразования
Укажите, какие ответы допустимы и какие изменения нужны. Преобразование только HTML должно оставлять нетронутыми изображения, архивы и не связанные с ними медиаданные. Служба также должна обрабатывать то представление, которое она реально получает: сжатые тела, кодировки символов и метаданные, описывающие изменённое тело. Вставка текста в произвольные байты ответа не является общим преобразованием HTML.
Учитывайте кэширование, если замена зависит от пользователя. Преобразование перед кэшем и общий кэш — плохое сочетание, если полученное представление действительно только для одного читателя. Держите в согласии возможность кэширования и политику преобразования и соблюдайте применимые директивы no-transform.
Наконец, обычный туннель HTTPS CONNECT передаёт зашифрованные байты. Он не открывает HTML адаптеру ответов. Намеренно управляемая схема проверки TLS требует собственной совместимой настройки и доверия клиентов, прежде чем расшифрованные ответы смогут попасть на этот путь. Одно лишь правило ICAP не добавляет такой видимости.