Головна FreeBSD Tinyproxy - легкий проксі-сервер під FreeBSD

Tinyproxy - легкий проксі-сервер під FreeBSD

Tinyproxy - легкий проксі-сервер під FreeBSD
Tinyproxy - легкий проксі-сервер під FreeBSD

Часом буває потрібно запустити проксі-сервер для надання доступу до якихось ресурсів (наприклад до керування у менеджмент VLAN) і не хочеться при цьому грузити систему чимось важким типу Squid. Тут то нам і приходить на допомогу легкий проксі-сервер Tinyproxy.

Встановлюється він дуже просто:

# pkg install tinyproxy
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        tinyproxy: 1.10.0,1

Number of packages to be installed: 1

48 KiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching tinyproxy-1.10.0,1.txz: 100%   48 KiB  49.3kB/s    00:01
Checking integrity... done (0 conflicting)
[1/1] Installing tinyproxy-1.10.0,1...
[1/1] Extracting tinyproxy-1.10.0,1: 100%

Всі налаштування прописуються в файлі /usr/local/etc/tinyproxy.conf

User nobody
Group nobody

Port 8888
#Listen 192.168.0.1
#Bind 192.168.0.1
#BindSame yes
Timeout 600
#ErrorFile 404 "/usr/local/share/tinyproxy/404.html"
#ErrorFile 400 "/usr/local/share/tinyproxy/400.html"
#ErrorFile 503 "/usr/local/share/tinyproxy/503.html"
#ErrorFile 403 "/usr/local/share/tinyproxy/403.html"
#ErrorFile 408 "/usr/local/share/tinyproxy/408.html"
DefaultErrorFile "/usr/local/share/tinyproxy/default.html"
StatHost "tinyproxy.stats"
StatFile "/usr/local/share/tinyproxy/stats.html"
LogFile "/var/log/tinyproxy.log"
#Syslog On
LogLevel Info
PidFile "/var/run/tinyproxy.pid"
#XTinyproxy Yes
MaxClients 100

MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0

Allow 127.0.0.1
#BasicAuth user password
#AddHeader "X-My-Header" "Powered by Tinyproxy"
ViaProxyName "tinyproxy"
#DisableViaHeader Yes

#Filter "/usr/local/etc/tinyproxy/filter"
#FilterURLs On
#FilterExtended On
#FilterCaseSensitive On
#FilterDefaultDeny Yes

#Anonymous "Host"
#Anonymous "Authorization"
#Anonymous "Cookie"

#ConnectPort 443
#ConnectPort 563

#ReversePath "/google/" "http://www.google.com/"
#ReversePath "/wired/"  "http://www.wired.com/"
#ReverseOnly Yes
#ReverseMagic Yes
#ReverseBaseURL "http://localhost:8888/"

де

User/Group - користувач і група від яких працюватиме сервер,

Port - порт, який слухатиме сервер,

Listen - задає ІР-адресу до якої прив‘яжеться сервер для вхідних з‘єднань (якщо не задано то слухатиме на всіх доступних адресах)

Bind - задає ІР-адресу з якої відправлятимуться проксовані запити (якщо не задано, система сама вирішуватиме)

BindSame - якщо yes, то запити після проксі матимуть адресу вхідного з‘єднання

Timeout - час життя з‘єднання

ErrorFile та DefaultErrorFile - визначають файли що показиватимуться при HTTP-помилках

StatHost - визначає спеціальний домен по якому відображатиметься статистика

StatFile - визначає шлях до файлу-шаблону статистики (якщо не існуватиме покажеться стандартна сторінка)

LogFile - визначає адресу лог-файлу

Syslog - якщо задано, логування йтиме через syslog. Не можна прописувати з LogFile!

LogLevel - визначає рівень логування (від Info - логується все що можна до Critical - логуються тільки критичні помилки)

PidFile - визначає шлях до файлу де зберігається PID процесу

XTinyproxy - якщо встановлено yes, tinyproxy додаватиме заголовок X-Tinyproxy з ІР-адресою клієнта

upstream - вказує вищестоячі проксі і дозволяє керувати маршрутизацією запитів

MaxClients - максимальна кількість клієнтів які зможе обслуговувати сервер

MinSpareServers/MaxSpareServers - визначає мінімальну і максимальну кількість простоюючих інстансів сервера

StartServers - визначає кількість інстансів при запуску. Повинно бути між MinSpareServers і MaxSpareServers.

MaxRequestsPerChild - визначає скільки запитів житиме інстанс до знищення. 0 - означає немає лімітів.

Allow - якщо хоч одна директива Allow є в конфізі, правило за замовчуванням стає Deny і доступ до проксі дозволяється тільки з IP прописаних в директивах Allow.

BasicAuth - дозволяє доступ тільки прописаним тут користувачам. Якщо хоч одна директива прописана, сервер вимагатиме авторизації.

AddHeader - додає заголовки в проксовані відповіді. Не працює для HTTPS.

ViaProxyName - визначає який що буде прописано в заголовку Via. Якщо не визначено, в заголовок впишеться доменне ім‘я сервера.

DisableViaHeader - відключає вивід заголовка Via. RFC не рекомендує так робити.

Filter - вказує розташування файлу фільтру.

FilterURLs - встановлює фільтрацію по УРЛ замість фільтрації по домену.

FilterExtended - дозволяє використання POSIX-сумісних регулярних виразів.

FilterCaseSensitive - дозволяє використання регістрозалежних регулярних виразів.

FilterDefaultDeny - забороняє все що не дозволено в файлі фільтра.

Anonymous - якщо визначено, описує заголовки які дозволені при анонімному проксуванні. Якщо не визначено - дозволено всі заголовки.

ConnectPort - визначає на які порти може з‘єднуватись CONNECT при проксуванні SSL-захищених з‘єднань. Для заборони всіх SSL виставляється в 0. Якщо не визначено то дозволені всі порти.

ReversePath - прописує шляхи реверсивного проксі. Це означає що якщо у вас прописаний шлях "/google/" "http://www.google.com/", а проксі працює на машині proxy.com:8888, то гугл відкриватиметься за адресою proxy.com:8888/google/.

ReverseOnly - дозволяє тільки реверс-запити.

ReverseMagic - дописує куки лдя відслідковування реверс-запитів. Корисно коли на проксованому сайті є абсолютні посилання.

ReverseBaseURL - базова адреса, що дописується в проксований сайт для правильної роботи редіректів. (Пишіть сюда адресу вашого проксі)


Ось такий нескладний файлик конфігурації (він з коментами англійською мовою в принципі йде в поставці). Тепер прописуємо наш проксі в rc.conf і запускаємо:

echo 'tinyproxy_enable="YES"' >> /etc/rc.conf

service tinyproxy start

Гарного адміністрування!


P.S. Якщо вам здається що я щось не так пишу, або просто маєте який гарний життєвий приклад - не соромтесь використовувати "зворотній зв‘язок" і/або коменти :)

perm_identity event

Коментарі