Назад | Перейти на главную страницу

Squid с белым списком и редиректом

Мне удалось настроить Squid3 на сервере Debian Squeeze 6.0 в прозрачном режиме с перенаправлением iptables nat.

Все запросы на порт 80 правильно перенаправляются на squid, а затем сравниваются с файлом белого списка.

Все запросы к сайтам, не включенным в белый список, отправляются на настраиваемую страницу ERR_ACCESS_DENIED. Эта страница содержит простую форму входа.

Таким образом, когда сайт заблокирован, пользователь может добавить этот сайт в белый список.

Я создал очень простой скрипт PHP, который берет URL (с регулярным выражением), добавляет его в белый список и перезапускает squid.

На этом этапе я бы перенаправил браузер на новый авторизованный сайт с помощью простого

$your_url = http://www.example.com;
header("Location: $your_url");

но squid дает мне страницу ERR_INVALID_URL, пытающуюся извлечь

(null)://www.example.com

Если я попытаюсь ввести URL-адрес в адресной строке, сайт будет обслуживаться правильно.

Я пытался установить тайм-аут в PHP перед перенаправлением, но даже с тайм-аутом в 1 минуту перенаправление не выполняется. Между тем, ввод URL-адреса в адресной строке работает нормально.

Есть подсказка?

ОБНОВИТЬ Проблема легко решается переходом на Squid 2.7

Ошибка Squid3 Вот

Проблема решена при переходе на Squid 2.7

У меня есть аналогичный проект под названием parentwall. Я решил проблему, используя squid -k reconfigure вместо перезапуска squid. То же самое можно сделать и со сценариями rc.

Перезапуск Squid длится вечно и не требует перезагрузки белого списка.

Просто подумал, но здесь может быть проще просто перенаправить javascript. Поэтому вместо того, чтобы пытаться выполнить перенаправление с помощью PHP, просто верните страницу с некоторым javascript.

Он немного менее элегантен, но, вероятно, будет проще.