Содержание статьи:
Появилась необходимость настроить в 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 к файлу со списком запрещенных сайтов
1 2 |
# Путь к черному списку сайтов acl BlackList dstdomain "/etc/squid/BlackList.txt" |
И после правила блокирования сайтов из данного списка, задаем правило перенаправления на нужную нам страницу
1 2 3 4 |
# Блокировать запрещенные сайты http_access deny BlackList # Страница перенаправления deny_info http://www.yandex.ru BlackList |
Сохраняем конфигурацию и перезапускаем Squid
1 |
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
1 |
sudo nano /usr/share/squid/errors/Russian-koi8-r/ERR_ACCESS_DENIED |
Нас интересует параметр <meta> в секции <head></head>, находим строчку:
1 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
Приводим к такому виду:
1 |
<meta http-equiv="refresh" content="5;http://www.yandex.ru"> |
Пояснения:
1 2 |
http-equiv="refresh" - Загрузить другой документ в текущее окно браузера. content="5;http://www.yandex.ru"> - где 5 кол-во секунд и адрес сайта который нужно загрузить. |
Сохраняем и проверяем работу. Теперь если пользователь попытается зайти на заблокированный сайт, то он сразу увидит страницу err_access_denied (оповещение что данный сайт в списке блокировки) и через 5 секунд будет перенаправлен на сайт yandex.ru.
Понравилась или оказалась полезной статья, поблагодари автора
Оставить ответ