Часом буває потрібно запустити проксі-сервер для надання доступу до якихось ресурсів (наприклад до керування у менеджмент 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. Якщо вам здається що я щось не так пишу, або просто маєте який гарний життєвий приклад - не соромтесь використовувати "зворотній зв‘язок" і/або коменти :)
Коментарі