трафик-компрессор для пользователей Dial-Up

В статье описывается трафик-компрессор, предлагаемый как дополнительная услуга Dial-Up пользователям небольшого оператора связи.

В основе компрессора лежит прокси-сервер ziproxy, который умеет сжимать проходящий через него трафик и рефакторить HTML-код, однако чтобы немного его разгрузить и добавить нормальную возможность разграничения доступа добавлен второй каскад – прокси-сервер squid, который кэширует пользовательские запросы и снижает нагрузку на ziproxy.

В статье будет подразумеваться что используется дистрибутив Gentoo. В случае другого дистрибутива команды и пути могут отличаться.

Итак шаг первый - установка ПО:

emerge squid ziproxy

Теперь приступим к настройке. Тут тоже ничего сложного. Для начала настроим ziproxy так, чтобы он слушал только localhost и принимал запросы только с него же. Для этого в ziproxy.conf нужно написать:

Port = 65534
Address = "127.0.0.1"
OnlyFrom = "127.0.0.1"


Следующим шагом настраиваем сжатие. Отключаем сжатие картинок (включать стоит только при очень маленьком количестве клиентов или очень мощном сервере) и включим сжатие текста:

ProcessJPG = false
ProcessPNG = false
ProcessGIF = false
ProcessHTML = true
ProcessCSS = true
ProcessJS = true


После этого переходим к параметрам сжатия (а главное – рефакторинга!) HTML:

ProcessHTML_CSS = true
ProcessHTML_JS = true
ProcessHTML_tags = false
ProcessHTML_text = false
ProcessHTML_PRE = true
ProcessHTML_NoComments = true


Эти опции подбирались экспериментально, чтобы не ломать код, но при этом максимально уменьшать его размер.

Все. Конфигурирование ziproxy закончено. Запускаем его:

/etc/init.d/ziproxy start
rc-update add ziproxy default


Переходим к настройке squid. Тут все еще проще - нужно только создать acces_list с разрешениями для "своих" сетей, и настроить форвардинг на ziproxy.

Для решения первой задчи добавляем в squid.conf следующие строки:

acl our_networks src "/etc/squid/our_networks"
http_access allow our_networks


И перечисляем сети в файле /etc/squid/our_networks.

Для решения второй задачи дописываем в squid.conf строки:

cache_peer 127.0.0.1 parent 65534 0 no-query no-digest
never_direct allow all
always_direct deny all


Так же мы можем увеличить время хранения в кэше определенных типов файлов:

refresh_pattern \.bz2$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.css$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.exe$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.gif$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.gz$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.js$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.mid$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.mp3$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.pdf$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.swf$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.tar$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.tgz$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache
refresh_pattern \.zip$ 43200 100% 43200 override-lastmod override-expire ignore-no-cache


По умолчанию squid слушает на порту 3128, если хотите переместить его на другой порт - используйте директиву http_port в файле конфигурации. Запускаем squid:

/etc/init.d/squid start
rc-update add squid default


Теперь ваши клиенты могут указать в настройках браузера адрес squid и наслаждаться некоторым приростом скорости. После нескольких месяцев использования было замечено что при включеной графике в браузере скорость возрастает процентов на десять, а при выключенной - в два-три раза. Также по желанию пользователей можно добавить еще и "банерорезку" для запрета загрузки рекламы.

Для сбора стастистика можно использовать sarg и ziproxylogtool (последняя входит в комплект ziproxy).

Настройка sarg описана много раз, и тратить на это время мы не будем. Лучше сразу перейдем к ziproxylogtool. Эта утилита обладает достаточно небольшим функционалом, однако кое-что можно сделать и с ее помощью. Например, смотреть статистку по дням. Для этого нужен очень простой скрипт:

#!/bin/sh
/bin/echo "<PRE>`/bin/date +%d/%m/%Y --date "-1 day"`" >> /var/www/more/stat/ziproxy/index.html
/bin/echo "`/usr/bin/ziproxylogtool -m g -i /var/log/ziproxy/access.log`</PRE><BR><BR>" >> /var/www/more/stat/ziproxy/index.html
/bin/echo > /var/log/ziproxy/access.log


Этот скрипт должен запускаться каждый день в полночь.



MooSE


Сетевые решения. Статья была опубликована в номере 07 за 2007 год в рубрике sysadmin

©1999-2024 Сетевые решения