Есть Squid 3.5.28. Непрозрачный, работает с указанием адреса в прокси.
Включил директиву deny_info с перенаправлением на другой адрес.
deny_info 303:
url.com block_users
В ACL block_users попадают пользователи, у которых закончился трафик.
Проблема в том, что если пользователь идет на HTTP-сайт, то его перенаправляет, а если на HTTPS, то просто браузер выводит сообщение о том, что не может установить соединение.
Работа идет с поддержкой метода peek and splice. Логи следующие.
TCP_DENIED/407 4169 GET
rejik.ru - HIER_NONE/- text/html
TCP_DENIED/407 4398 GET
rejik.ru - HIER_NONE/- text/html
TCP_DENIED/303 471 GET
rejik.ru login HIER_NONE/- text/html
TCP_DENIED/407 3884 CONNECT ya.ru:443 - HIER_NONE/- text/html
TCP_DENIED/407 4113 CONNECT ya.ru:443 - HIER_NONE/- text/html
TCP_DENIED/303 470 CONNECT ya.ru:443 login HIER_NONE/- text/html
Насколько я понял, при заходе на http он получает TCP_DENIED и обращается к директиве deny_info и перенаправляет юзера туда, поскольку вернулся код 303. В случае захода на HTTPS он тоже получает TCP_DENIED и пытается перенаправить, но поскольку SSL-туннель уже поднят, адреса хоста в нем уже не изменить. У меня работало перенаправление в случае подмены сертификатов, но это не вариант, поскольку добавлением сертификата в доверенные проблему того, что браузеры ругаются на неверный сертификат, не решить.
Как еще можно решить эту проблему?