Для прямого проксі 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 не додає такої видимості.

Схожі статті