Squid - это не только прокси и кеш-сервис, он может делать гораздо больше: управлять acl (списками доступа), фильтровать контент, он может даже выполнять ssl-фильтрацию даже в прозрачном режиме (метод прокси - без необходимости настраивать в настройках прокси. из их браузеров, это как человек посередине, никто не знает, что это там). Поэтому я обычно вижу, как весь потенциал этого приложения тратится впустую из-за того, что я не знаю, как настроить каждую из его частей.
Теперь самое интересное, что делает squid, - это кеш (на мой взгляд). Вы скажете мне, зачем нужен кеш? Причина проста, главное - лучше управлять скоростью и пропускной способностью. Подумайте внимательно, 1000 человек в вашей компании консультируются каждые 5 минут, общие страницы, Google, Hotmail, Gmail и т. Д., Так что вы собираетесь загружать изображения, баннеры, рекламу, html-контент снова и снова, все это статичные вещи, нет они меняются так часто, что лучше хранить их в вашей локальной сети, и вы доставляете копию, которую считаете недавней, в рамках рассмотренных вами конфигураций.
Как это сделать? Просто со следующим предложением:
refresh_pattern [-i] regex min percent max [options]
Как я всегда говорю, не верьте всему, поэтому я приглашаю вас читать из официального источника. Я рекомендую вам прочитать руководство к этому предложению ЗДЕСЬ
Приговор Refresh_pattern Наш лейбл всегда будет добавлять новые параметры в кеш.
Важно, что ваши списки кешей должны быть последовательными, потому что, как только они совпадут с первым, который соответствует объекту, он не будет продолжать читать ваши другие правила.
Регулярные выражения чувствительны к регистру, поэтому flv - это не то же самое, что FLV, но вы можете избежать этого, если хотите, используя параметр -i . Тогда это выглядело бы так обновить_паттерн -i
«Мин»: - время (в минутах), в течение которого объект будет считаться «недавним или новым», и если для него нет явной метки «истек». По умолчанию squid рекомендует, чтобы оно было равно 0, из-за того, что некоторые динамические приложения могут вести себя странно, чисто бла-бла-бла, на самом деле это значение должно быть числом, которое вы считаете полезным и эффективным для элементов, которые вы хотите кэшировать, пример: jpg, 1440 минут (в день) мне кажется нормальным, это не похоже на то, что изображения поста меняются каждые 5 минут на странице.
'Процент' Это процент возраста объекта (от последней модификации), который будет считаться «недавним или свежим». Позвольте мне объяснить, возможно, выполняя постоянную перезагрузку или обновление, чтобы увидеть последние изменения, которые были внесены на веб-страницу, squid мог бы рассмотреть, если он уже, скажем, 50% времени завершился между мин y Макс, повторно загрузите этот объект из Интернета и дайте вам новую копию.
'Максимум' предел больше или равен 'Мин' как долго объект считается «недавним или свежим», предположим, что изображение какой-либо страницы использовалось пользователем только один раз, этот объект уже достиг своего времени мин, но не Макс, затем при повторном запросе будет доставлена копия кеша.
Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale
Эти параметры были сделаны в основном для того, чтобы игнорировать предустановленное поведение в языках и протоколах, чтобы гарантировать эффективное использование кеша.
override-expire
Он обеспечивает минимальное время объекта, даже если сервер отправил более короткое время истечения срока действия (например, заголовок или Cache-Control: max-age). Если мы сделаем это, появится «предупреждение» вроде «НАРУШАЕТ стандарт HTTP», но это просто предупреждения, которые мы можем игнорировать. Теперь, если время отправки сервером больше, тогда squid будет принимать время (истечение срока) сервера
override-lastmod
Увеличивает минимальное время элемента, даже если этот элемент был недавно изменен.
reload-into-ims
Краткое объяснение состоит в том, что это предотвращает то, что когда мы нажимаем кнопку обновления или делаем запрос без кеширования, squid доставит кеш, если он не был «изменен с тех пор» и / или если на странице нет «заголовков».
ignore-reload
Игнорировать действия пользователей по нажатию кнопки перезагрузки или обновления страницы
ignore-no-store
Игнорируйте любое правило в заголовках, чтобы не кешировать, например видео
ignore-private
Игнорируйте любые правила в заголовках приватного контента, которые не должны кэшироваться, например: контент facebook.
refresh-ims
Squid связывается с сервером, чтобы убедиться, что объект самый новый. Если это так, то он доставит кеш
store-stale
Squid сохранит все эти ответы, даже если у них нет срока годности, это очень непрактично, поскольку их обычно нельзя использовать повторно. Если вы решите включить его, вы должны объявить max-stale = NN
max-stale=NN
Если вы включили вышеуказанное, вы должны объявить максимальное время жизни для этого ответа или фактора. Squid не доставляет объекты этого стиля, но может проверить его с помощью источника
Вот таблица того, как работает состояние «СВЕЖЕЕ» в соответствии со значениями, которые мы обсудили:
- СВЕЖИЙ, если срок действия истекает> сейчас, иначе УСТАРЕЛ
- УСТАРЕЛО, если возраст> макс.
- СВЕЖИЙ, если lm-фактор <процент, иначе СТАЛО
- СВЕЖИЙ, если возраст <мин., Иначе УСТАРЕВШИЙСЯ
Вот пример конфигурации для конкретной компании с большим объемом дискового пространства, хорошим оборудованием и хорошей пропускной способностью.
refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB
Теперь кеш находится не только на жестком диске, мы также можем кэшировать оперативную память, это значение предназначено для каждого процесса squid, поэтому вы должны учитывать это при использовании таких перенаправителей, как кальмар
maximum_object_size_in_memory 1024 KB
Максимальный размер объекта в памяти, который squid будет хранить в RAM. Также можно объявить минимум.
memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF
Как видите, одна из них - это политика замены кеша в оперативной памяти, а другая - на жестком диске. Есть 2 политики GDSF и LFUDA. Первый стремится улучшить процент попаданий в кеш, имея под рукой много мелких объектов, второй - наоборот, он сохраняет объекты в кеше независимо от их размера.
Вопрос, который, как мне кажется, вы задаете мне в данный момент, звучит так: «Какая польза?» Что ж, если учесть, что в вашей среде они выполняют много запросов и мало загрузок используют GDSF, если, наоборот, они выполняют много загрузок и мало запросов LFUDA. Что если я рекомендую LFUDA, когда вы собираетесь делать, я не знаю, кеш на 1 ТБ диска, это более эффективно.
maximum_object_size 4 MB
Максимальный размер объекта, который может быть сохранен
cache_dir aufs /media/proxy249/cache 100 16 256
Обратите внимание, где будет храниться кеш, важно, если вы используете ufs, aufs или diskd, все 3 работают более или менее одинаково, разница в том, что aufs и diskd работают с отдельными процессами для выполнения операций ввода-вывода на жестком диске и избегайте зависания процессов squid во время этих операций, дополнительно на diskd вы можете указать количество потоков, которые у вас будут для этой задачи. Я рекомендую aufs, если у вас хорошая команда.
Размер 100 (мегабайт), можно поставить 100000, это почти 100гб в зависимости от вашей доступности. 16 - это количество папок, а 256 - количество подпапок. Вы можете играть с обоими значениями, в зависимости от того, насколько быстры ваши диски и сколько ресурсов у вас есть.
cache_swap_low 90
cache_swap_high 95
Эти параметры представляют собой заменяющие значения объектов, это минимальное и максимальное значение в качестве водяного знака в соответствии с squid, где эти числа указаны в процентах (%), а в очень маленьком кэше 5%, как это прямо сейчас, будет, скажем, 300 объектов в секунду , но в очень больших кэшах мы будем говорить о тысячах МБ
Ну вот и оставляю тебя, это пока, комментарий а также примите во внимание тех, кто сказал мне, что они не могут кэшировать и фильтровать https (SSL) страницы в squid 3.5 или выше, я скоро принесу их вам, следите за обновлениями этого блога.
Отличное дополнение к первой части!
Существует много литературы о Squid, но не всегда под рукой добраться до сути его наиболее практичных вариантов с соответствующими пояснениями и возможными сценариями реального использования!
Как всегда, с нетерпением жду ее третью часть!
Спасибо за ваш комментарий. Это правильно, краткое описание всех соответствующих элементов и несколько настроек передового опыта. Однако я всегда внимательно отношусь к вашим комментариям и собственному опыту.
Здравствуйте, у меня проблема с обновлениями windows и антивирусом. У меня в учреждении около 120 компьютеров. Не могли бы вы дать мне идею, как исправить эту ситуацию. Спасибо за помощь и поздравляю со статьей.
Здравствуйте, спасибо за участие ... ну если я могу вам помочь, но хорошо объясните, в чем ваша проблема, вы не можете скачать обновления? Вы указали прокси в параметрах Интернета и то же самое в параметрах прокси вашего браузера? Вы проверили порты? Или вы хотите кэшировать эти обновления?
Мне нужно, чтобы каждый раз, когда компьютер загружает обновление Windows или антивирус, оно остается в кеше примерно на месяц, таким образом я хотел бы сэкономить пропускную способность, так как каждое утро каждый раз все компьютеры начинают загружать одни и те же обновления, и соединение прерывается.
Спасибо за вашу помощь.
Сервер с Squid работает, так как это простые незашифрованные HTTP-загрузки. Другие решения для кеширования - это WSUS и Altiris, обычные для компаний.
Спасибо, Марио, буду иметь это в виду.
хорошо готово, я понял, проверьте эту ссылку. http://wiki.squid-cache.org/SquidFaq/WindowsUpdate. чтобы кэшировать антивирус, вы должны знать, откуда и под каким расширением загружаются обновления (например, .exe), и кешировать его ...
Спасибо за вашу помощь.
Доброе утро, друзья, не могли бы вы поддержать меня в моем случае. так как у меня есть squid 2.7 .STABLE9 на debian 6, и у меня все настроено, и при его установке в среде 10 ПК я получаю обычную почту, проблема заключается в том, что я монтирую его на 90 ПК, он работает всего несколько секунд, и оттуда все они остались без интернета. Не могли бы вы поддержать меня?
Отличное объяснение, простое, но очень ясное и точное. Лично лучшее объяснение, которое я смог прочитать.
У меня вопрос, можно ли кешировать такие Android-приложения, как apk и xapk?
И как правильно настроить динамический кеш независимо от происхождения файлов?
Я использую pfSense 2.4.5.