Содержание статьи:
Появилась необходимость настроить в Squid перенаправление на определенный сайт в случае если пользователь пытается зайти на сайт который находится в списке заблокированных. Я нашел для себя несколько способов реализовать данную задачу.
Рассмотрим способ мгновенного редиректа на заданный сайт и редирект с отображением страницы ERR_ACCESS_DENIED (входящую в состав Squid) и через несколько секунд выполнять редирект на заданную страницу.
Проделываться все будет на Squid 3.5.19 (статья по установке) установленным на Ubuntu server 14.04. Но уверен что способы будут работать и на отличных от моих параметров.
Первый способ. Мгновенный редирект на заданную страницу.
Данный способ крайне просто в применении. В данном способе используем директиву deny_info, синтаксис ее выглядит так:
- deny_info http://… acl — с указанием внешнего сайта для редиректа.
- deny_info err_access_denied acl — в указанием информационных страниц Squid
Пример использования:
У нас задан acl к файлу со списком запрещенных сайтов
# Путь к черному списку сайтов acl BlackList dstdomain "/etc/squid/BlackList.txt"
И после правила блокирования сайтов из данного списка, задаем правило перенаправления на нужную нам страницу
# Блокировать запрещенные сайты http_access deny BlackList # Страница перенаправления deny_info http://www.yandex.ru BlackList
Сохраняем конфигурацию и перезапускаем Squid
sudo service squid restart
Теперь если пользователь попытается зайти на заблокированный сайт, то он сразу будет перенаправлен на сайт yandex.ru
Второй способ. Отображением страницы ERR_ACCESS_DENIED и последующим редиректом на заданную страницу.
Данный способ отличается от первого тем что, пользователь сперва видит страницу err_access_denied и через несколько секунд перенаправляется на заданную нами страницу. Здесь мы не будем использовать директиву deny_info, а пропишем параметры редиректа в самой странице err_access_denied.
Все страницы заготовки Squid находятся тут /usr/share/squid/errors/Russian-koi8-r. Отредактируем страницу ERR_ACCESS_DENIED
sudo nano /usr/share/squid/errors/Russian-koi8-r/ERR_ACCESS_DENIED
Нас интересует параметр <meta> в секции <head></head>, находим строчку:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Приводим к такому виду:
<meta http-equiv="refresh" content="5;http://www.yandex.ru">
Пояснения:
http-equiv="refresh" - Загрузить другой документ в текущее окно браузера. content="5;http://www.yandex.ru"> - где 5 кол-во секунд и адрес сайта который нужно загрузить.
Сохраняем и проверяем работу. Теперь если пользователь попытается зайти на заблокированный сайт, то он сразу увидит страницу err_access_denied (оповещение что данный сайт в списке блокировки) и через 5 секунд будет перенаправлен на сайт yandex.ru.
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Оставить ответ