В статье описывается трафик-компрессор, предлагаемый как дополнительная услуга пользователям 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
Этот скрипт должен запускаться каждый день в полночь.
Ссылки:
sungreen 2007-06-09 21:33:50 (#)