Десктопний squid

Squid – проксі-сервер для *nix систем, з широким спектром налаштувань на всі випадки життя і морем функціоналу, який можна гнучко налаштувати.

Ну це все апріорі відомо, і досить абстрактно звучить. Переважно сквідом роздають нет і фільтрують HTTP-трафік, використовуючи одну з корисних функції – можливість роботи як transparent proxy, тобто варто відправити запит кудись на певний порт, і він піде через squid.Мене особисто, як гордого користувача linux-десктопа шкребла інша потреба – кешувати трафік. 3G модем має значну затримку проходження кожного запита (біля 100-200 мс), так само як обмежений трафік.

Ламерським методом відкрив synaptic і знайшов пакет squid. Щоправда, галочку поклав навпроти іншого – squid3. Відрізняються версіями: перший 2.8, другий, як неважко здогадатись, 3. Через кілька хвилин в процесах гордо з’явився одноіменний демон.

Ну, думаю, на дворі 21 століття, покладу гуйову конфігурялку і там буду класти галочки – потім перейду до конфіга. Пошук народив GADMIN-SQUID. Щось пробував запускати… працює лише з сквідом давнішої версії, інтерфейс незручний, конфіг заміняє своїм кастрованим і розібратись що й до чого важко. Звільнив вінт від непотрібного зла, і відкрив конфіг /etc/squid3/squid.conf. Дуже сподобалась детальна документація кожного тега, простий синтаксис і акуратне форматування.

Не становило труднощів знайти тег port, і надати йому наступного вигляду:

port 80 transparent

Що в перекладі з старокитайської значить, що сквід працюватиме як transparent, аби не прописувати всюди проксі. 80 – це HTTP порт, те що треба. Ще вичитав про цікаву опцію accel, але яким боком її треба, не зрозумів. Фактично, можна користуватись.
Після зміни конфігу варто його перечитати, можна по правилах

sudo squid3 -k reconfigure ,

а спочатку я просто перезавантажував демона, поки не розібрався

sudo service squid3 restart

Можна тепер трохи тюнінгнути сервіс. По дефолту при завершенні роботи демона, прописаний таймаут 30 секунд. На десктопі це ну взагалі непотрібно. Тому пишем, що

shutdown_lifetime 2 seconds

Файнота. Ще помістив каталог з кешем туди, куди схотів – /var/cache/squid3 (лежав у /var/spool/squid3)

cache_dir ufs /var/cache/squid3 256 16 256

Що означає буквально вищеназваний шлях, потім місце, виділене під кеш в МБ, кількість каталогів, і підкаталогів. ufs – то метод збереження даних в кеші. Взагалі, міняти тут крім шляху директорії і виділеного місця немає що.
Розмір кеша можна контролювати командою

sudo du -sh /var/cache/squid3/

Агресивне кешування статики – коментуєм дефолтні опції

#refresh_pattern ^ftp: 1440 20% 10080
#refresh_pattern ^gopher: 1440 0% 1440
#refresh_pattern (cgi-bin|\?) 0 0% 0
#refresh_pattern . 0 20% 4320

А патерни різного дріб’язку завертаєм в кеш всерйоз і надовго

refresh_pattern \.gif$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.png$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.jpeg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.css$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.flv$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.js$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache

Мінімальний і максимальний розмір об’єкту як критерій кешування

maximum_object_size 4096 KB
minimum_object_size 0 KB

Жир. Кешування браузером відключив, він занадто ліберальний в цьому плані, і тепер сторінки віддаються оперативніше, та й трафік не втікає.

Що ж робити, якщо потрібно перезавантажити сторінку, а тут сквід з своїм кешем? Маю звичку такі сервісні серверні процеси контролювати ярликами, напр.

#!/bin/sh
sudo service squid3 start

, або

#!/bin/sh
sudo service squid3 stop

Я не зачіпав таких чудових функцій, як збереження логів мережевих операцій і списки доступу, це штука більш специфічна для серверів. Також без потреби ковбасити через сквід FTP-трафік, хоча таке можливо.

This entry was posted in GNU\Linux. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

You must be logged in to post a comment.