Мне поставили задачу ограничить потребление полосы пропускания. Я установил squid в качестве прозрачного прокси-сервера и блокирую различные типы контента, например видео, x-flv ... Тип контента acl вроде работает нормально. Я также установил для reply_body_max_size значение 10 МБ, но загрузка больших файлов все еще происходит. Этот только вчера вечером прошел.
1331243510.997 621794 192.168.0.100 TCP_MISS/200 37603388 GET http://cache.pack.google.com/edgedl/chrome/mac/GoogleChrome-17.0.963.78.dmg - DIRECT/173.194.12.207 application/x-apple-diskimage
вот моя директива: (squid был перезапущен после изменения)
reply_body_max_size 10 MB
Из чтения документации по squid http://www.squid-cache.org/Doc/config/reply_body_max_size/ похоже, может быть какая-то проблема с другим прокси-сервером squid. Я знаю, что у провайдера, которого они используют (Tachyon Systems), есть прокси-сервер Squid, встроенный в их модем.
Может быть, поэтому reply_body_max_size не работает в моей среде?
Как Документация по Squid говорит, что конфигурационная директива reply_body_max_size заставляет Squid прекращать передачу, когда тело ответа HTTP превышает указанный размер. Squid проверяет это двумя способами: с помощью заголовка HTTP Content-Length:, если он присутствует - в этом случае ответ не будет разрешен и в журнал будет записано TCP_DENIED_REPLY. Или, если заголовок HTTP Content-Length: отсутствует, ответ будет разрешен, но соединение будет закрыто при достижении reply_body_max_size.
Во втором сценарии может иметь место потенциально важный эффект для любого кеша, находящегося ниже по течению от вас. Если HTTP-передача была запущена без заголовка HTTP Content-length:, а ваша копия Squid впоследствии разорвала соединение, когда был достигнут предел размера ответа, кэш нисходящего потока не узнает, что соединение было разорвано до того, как был завершен полный текст ответа. послал. Это может привести к тому, что неполная копия объекта будет сохранена в кэше нисходящего потока. Однако, судя по вашему описанию, я не думаю, что здесь дело обстоит именно так, поскольку вы говорите о прокси-сервере верхнего уровня, управляемом вашим интернет-провайдером.
Кстати, я не могу понять, где прокси-сервер может повлиять на вашу способность накладывать ограничение на размер тела ответа.
Одно замечание по синтаксису в вашей конфигурации. Вы указали:
reply_body_max_size 10 MB
Когда я думаю, что это действительно должно быть:
reply_body_max_size 10 MB all
Обратите внимание на имя ACL «все» в конце. Документация Squid помещает список ACL в квадратные скобки, что обычно указывает на то, что этот параметр является необязательным, и в моем тестировании я определенно обнаружил, что это так. Однако в некоторых местах сети (и в этой ветке выше) есть вариации этого синтаксиса, где иногда слово «разрешить» или «запретить» также помещается в строку конфигурации. Согласно документации Squid и моим тестам, это неверно. Приведенный выше синтаксис прошел правильную проверку.
Nb. тестирование проводилось с использованием Squid 3.1.23 и Squid 3.5.0.2.
Вы должны попробовать применить это к исходному acl. Например: что-то вроде этого
acl localnet src 192.168.0.0/16
reply_body_max_size 52428800 deny localnet
http_access allow localnet