Alter.Org.UA  
 << Back Home EN en   Donate Donate www/www1/www2

Локальное кеширование HTTP (Proxy)

Вводная

Назло врагам, себе на радость будем кешровать HTTP трафик. Со всеми мыслимыми оптимизациями. Что это даст: повторная загрузка страниц, картинок, видеороликов будет практически мгновенной. А если у вас медленный канал (GPRS, DSL) - то сэкономите еще и на трафике. В среднем около 35%. На отдельный ресурсах (в частности YouTube) - до 90%. Можно также резать нежелательный контент (например, баннеры).

Скачать

Squid27-win-20130910.rar - основной пакет Squid Proxy
Squid27-win-conf-20131214.rar - свежие обновления

Локальная прокси (Squid)

Инструкция для Windows:

  • Качаем вот это Squid27-win-20130910.rar и Squid27-win-conf-20131214.rar
  • распаковываем в каталог C:\squid. Сначала 1-й архив, потом поверх второй (с самыми свежими обновлениями настроек). В Program Files не нужно, Squid на пробелы плохо реагирует.
  • Заглядываем в C:\squid\etc\squid.conf
    там есть следующие интересные вещи:
    • dns_nameservers - указание DNS'ов. Можно все закоментировать, тогда автоматом возьмет системные.
    • acl banners - Фильтры. Мои. Злобные и параноидальные. Можно править на свое усмотрение. Режет даже flash. Чтобы включить, нужно раскомментировать (убрать #) в squid.conf следующую строчку:
      #http_access deny banners !allow_banners
            
    • acl allow_banners - исключения. Тоже можно править.
  • Запускаем
    C:\squid\sbin\squid -z
    C:\squid\sbin\squid -i
    net start squid
    
  • В браузере в настройках сети указываем использование proxy (кеш) для всех протоколов 127.0.0.1, порт 3128
  • Наслаждаемся.

Посмотреть, куда ломится браузер, можно в файле C:\squid\var\logs\access.log

  • TCP_DENIED - заблоченое
  • TCP_MISS - пришлось тащить с сервера
  • TCP_REFRESH_HIT, TCP_IMS_HIT, TCP_MEM_HIT - закешировано (локальная копия)

Ошибки и диагностика - в файле C:\squid\var\logs\cache.log


после изменения настроек в C:\squid\etc\squid.conf нужно перезапустить Squid:

net stop squid
net start squid
или
sbin/squid.exe -k reconfigure -n squid

PS. оригинал тут: http://squid.acmeconsulting.it/download/squid-2.7.STABLE8-bin.zip
родная инструкция по установке: http://squid.acmeconsulting.it/SquidNT25.html. Это от 2.5, но ничего принципиального не изменилось.

Под Windows вместо squid_rewrite.pl используется url_rewrite.exe с параметром, указывающим на конфиг-файл с правилами. В качестве конфига можно использовать rewrite.pl, являющийся выжимкой из squid_rewrite.pl, а можно и сам squid_rewrite.pl. Оба .pl-файла находятся в подкаталоге etc, url_rewrite.exe - в libexec.

Локальная прокси (Squid) для Unix

Под Linix/FreeBSD другой порядок установки, но формат файлов такой же. Те же опции управления кешированием, те же refresh_pattern, storeurl_access и store_rewrite_list и acl'ы к ним, см. описание настроек в squid.conf ниже. Squid должен быть собран без --disable-http-violations, а еще лучше - с --enable-http-violations. Свежий конфиг и squid_rewrite.pl тут: Squid27-win-conf-20131214.rar, в каталоге etc

squid.conf

Окончательный вариант для Squid 2.6 или 2.7 такой:

squid.conf

acl store_rewrite_list url_regex -i \.youtube\.com\/get_video\?
acl store_rewrite_list url_regex -i \.youtube\.com\/videoplay.*
acl store_rewrite_list url_regex -i \.youtube\.[a-z][a-z]\/videoplayback
acl store_rewrite_list url_regex -i \.youtube\.[a-z][a-z]\/get_video\?
acl store_rewrite_list url_regex -i \.googlevideo\.com\/videoplayback\?
acl store_rewrite_list url_regex -i \.googlevideo\.com\/get_video\?
acl store_rewrite_list url_regex -i \.google\.com\/videoplayback
acl store_rewrite_list url_regex -i \.google\.com\/get_video\?
acl store_rewrite_list url_regex -i \.google\.[a-z][a-z]\/videoplayback
acl store_rewrite_list url_regex -i \.google\.[a-z][a-z]\/get_video\?
acl store_rewrite_list url_regex -i \.ytimg\.com\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)
acl store_rewrite_list url_regex -i \.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(videoplayback|videoplay|get_video)\?
acl store_rewrite_list url_regex -i (kh|mt)(.?)\.google\.com
acl store_rewrite_list url_regex -i maps\.googleapis\.com
acl store_rewrite_list url_regex -i mt\d+.googleapis\.com
acl store_rewrite_list url_regex -i vec([0-9]+)\.maps\.yandex\.net\/tiles
acl store_rewrite_list url_regex -i pvec([0-9]+)\.maps\.yandex\.net
acl store_rewrite_list url_regex -i static\.video\.yandex\.net\/(.*)\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4|wmw|avi|mpg|mpeg)
acl store_rewrite_list url_regex -i tub-ua\.yandex\.net
acl store_rewrite_list url_regex -i s\d+\.dotua\.org\/fsua_items.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)
acl store_rewrite_list url_regex -i fbcdn\.net.*\.(jpg|jpeg|gif|png|ico)
acl store_rewrite_list url_regex -i cdn(.?)/[0-9a-zA-Z_-]*.?\.flv
acl store_rewrite_list url_regex -i st(.*)\.userapi\.com
acl store_rewrite_list url_regex -i ecn\.dynamic\..*\.tiles\.virtualearth\.net\/comp
acl store_rewrite_list url_regex -i static\.video\.yandex\.ru\/swf
acl store_rewrite_list url_regex -i video\.meta\.ua\/players
acl store_rewrite_list url_regex -i \.vkadre\.ru\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)
acl store_rewrite_list url_regex -i (st|cs)(.?)\.vk\.me\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)
acl store_rewrite_list url_regex -i img\d+.slando\.ua\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)
acl store_rewrite_list url_regex -i .*s\d*\.staticclassifieds\.com\/static

storeurl_access allow store_rewrite_list
storeurl_access deny all
storeurl_rewrite_program /usr/local/bin/squid_rewrite.pl
#storeurl_rewrite_program C:/Squid/libexec/url_rewrite.exe -l G:\\Squid\\var\\logs\\rewrite.log C:\\Squid\\etc\\rewrite.pl
storeurl_rewrite_children 5
storeurl_rewrite_concurrency 10 # use only with newer rewrite helpers, v1.3 or above.
#cache allow store_rewrite_list
#cache deny all 

#	usage: refresh_pattern [-i] regex min percent max [options]
#	The refresh_pattern lines are checked in the order listed here.
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern youtube.*videoplay  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern youtube.*get_video  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern google.*videoplay   14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern googlevideo.*get_video  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern ytimg\.com\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern (mt|kh|pap).*\.google\.com  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern (mt|kh|pap).*\.googleapis\.com  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern s\d+\.dotua\.org\/fsua_items.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern .*static\.video\.yandex\.ru\/swf\/.*&r=.*  14400   90%     24400   ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern vec.*\.maps\.yandex\.net\/tiles\?	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern static.*\.maps\.yandex\.	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern pvec.*\.maps\.yandex\.net	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern lrs\.maps\.yandex\.net\/tiles\?		14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern yandex\.st\/.*(jpg|jpeg|gif|png|ico|mp3|flv|mp4)		14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern static\.video\.yandex\.net\/.*(jpg|jpeg|gif|png|ico|mp3|flv|mp4).*		14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private ignore-auth
refresh_pattern .*ecn\.dynamic.*\.tiles\.virtualearth\.net\/comp   14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern fbcdn\.net.*\.(jpg|jpeg|gif|png|ico|mp3|flv)	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern static\.ak\.fbcdn\.net.*\.(jpg|jpeg|gif|png|ico|mp3|flv)	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern (st|cs)\d+\.vk\.me\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern img\d+.slando\.ua\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv)	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern .*s\d*\.staticclassifieds\.com\/static	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern \.vkadre\.ru\/assets\/.*\.(jpg|jpeg|gif|png|ico|mp3|flv|mp4)	14400	90%	20080 ignore-no-cache override-expire override-lastmod ignore-reload ignore-private
refresh_pattern .*\.(css)$	1440	90%	1440 ignore-no-cache override-expire override-lastmod ignore-private
refresh_pattern .*\.(js)$	1440	90%	1440 ignore-private
refresh_pattern -i (/cgi-bin/|\?) 10	20%	120
refresh_pattern .		10	20%	4320
#	see also refresh_pattern for a more selective approach.

cache_mem 400 MB
maximum_object_size_in_memory 4 MB
maximum_object_size 32 MB
read_ahead_gap 64 KB
range_offset_limit -1

Note: При внесении изменений обращайте внимание на взаимное расположение блоков настроек.
acl'ы должны быть объявлены до их использования. Настройки имеет смысл вносить сразу за тем местом в squid.conf, где находится их описание и default'ное значение.

I2P

Доп. настройка для обработки запросов к I2P ресурсам

acl i2p_urls url_regex -i .*://.*\.i2p\/.*

cache_peer 127.0.0.1            parent    4444  4444  no-digest allow-miss no-query
cache_peer_access 127.0.0.1 allow i2p_urls

never_direct allow i2p_urls
never_direct deny all
always_direct deny i2p_urls
always_direct allow all

или даже так, для тотального заворота в анонимайзер:

cache_peer 127.0.0.1            parent    4444  4444  no-digest allow-miss no-query
cache_peer_access 127.0.0.1 allow all

never_direct allow all
always_direct deny all

Anti-banner

И на всякий случай вот кусок squid.conf, содержащий сами фильтры баннеров и прочей назойливой гадости. Под нож могли попасть и дозволенные (или неизбежные) вещи, поэтому будьте внимательны.

History

Исправления в подержке youtube. Запросы с redirect'ами должны оставаться в неизхменном виде.

Squid27-win-conf-20131214.rar

2013.12.14

Испрaвления, касающиеся кеширования картинок на facebook, хитрых непроигрывающихся роликов на youtube и производительности storeurl_rewrite.

Squid27-win-conf-20130924v2.rar

2013.09.24

1я версия.

Squid27-win-20130910.rar
Squid27-win-conf-20130916.rar

2013.09.16

См. также:




Mail to alterX@alter.org.ua (remove X)  
<< Back Автор: Alter (Александр А. Телятников) Сервер: Apache+PHP под FBSD © 2002-2017