Перейти к содержимому
Гайды 6 мин чтения 2 просмотров

Tinyproxy

Подробное руководство по установке и настройке Tinyproxy – минималистичного HTTP прокси на Linux. Узнайте, как быстро запустить свой сервер.

Tinyproxy — это легковесный и минималистичный HTTP/HTTPS прокси-сервер для операционных систем на базе Linux, предназначенный для пересылки веб-трафика с низким потреблением ресурсов.

Что такое Tinyproxy

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

Установка Tinyproxy

Установка Tinyproxy выполняется с помощью пакетного менеджера дистрибутива Linux.

Установка на Debian/Ubuntu

sudo apt update
sudo apt install tinyproxy

Установка на CentOS/RHEL/Fedora

sudo yum install epel-release # Для CentOS/RHEL, если EPEL не установлен
sudo yum install tinyproxy
# Или для Fedora
sudo dnf install tinyproxy

После установки Tinyproxy обычно запускается автоматически. Проверить статус сервиса можно командой:

sudo systemctl status tinyproxy

Если сервис не запущен, его можно запустить и добавить в автозагрузку:

sudo systemctl start tinyproxy
sudo systemctl enable tinyproxy

Базовая конфигурация

Основной конфигурационный файл Tinyproxy расположен по пути /etc/tinyproxy/tinyproxy.conf. Все изменения в этом файле требуют перезапуска сервиса Tinyproxy.

sudo nano /etc/tinyproxy/tinyproxy.conf

После изменений:

sudo systemctl restart tinyproxy

Ключевые директивы

  • Port: Определяет порт, на котором Tinyproxy будет прослушивать входящие соединения. По умолчанию: 8888.
    Port 8888
  • Allow: Определяет IP-адреса или подсети, которым разрешено использовать прокси. По умолчанию все входящие соединения запрещены. Необходимо добавить хотя бы Allow 127.0.0.1 для локального доступа или Allow 0.0.0.0/0 для доступа из любой сети (не рекомендуется для публичных серверов).
    Allow 127.0.0.1 Allow 192.168.1.0/24
  • Listen: Указывает IP-адрес интерфейса, на котором Tinyproxy будет прослушивать соединения. Если не указан, прослушивает все доступные интерфейсы.
    Listen 192.168.1.100
  • Timeout: Устанавливает таймаут простоя соединения в секундах.
    Timeout 600
  • User и Group: Определяют пользователя и группу, от имени которых будет работать Tinyproxy после запуска. По умолчанию nobody и nogroup.
    User nobody Group nogroup

Пример минимальной рабочей конфигурации

Предположим, прокси должен работать на порту 8888 и быть доступным только из локальной сети 192.168.1.0/24 и с локального хоста.

# /etc/tinyproxy/tinyproxy.conf

User nobody
Group nogroup

Port 8888

Allow 127.0.0.1
Allow 192.168.1.0/24

# Остальные директивы можно оставить по умолчанию или закомментировать
# Если требуется логирование, убедитесь, что LogFile и PidFile указаны
# LogFile "/var/log/tinyproxy/tinyproxy.log"
# PidFile "/var/run/tinyproxy.pid"

Расширенная конфигурация

Управление производительностью

  • MaxClients: Максимальное количество одновременно обслуживаемых клиентов.
  • MinSpareServers, MaxSpareServers: Определяют количество незанятых дочерних процессов, ожидающих новых соединений.
  • StartServers: Количество дочерних процессов, запускаемых при старте Tinyproxy.
  • MaxRequestsPerChild: Максимальное количество запросов, которые может обработать дочерний процесс перед перезапуском (для предотвращения утечек памяти).
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0 # 0 означает без ограничений

Управление заголовками HTTP

  • DisableViaHeader: Удаляет заголовок Via, который Tinyproxy добавляет по умолчанию, указывая, что запрос прошел через прокси.
    ini DisableViaHeader Yes
  • X-Tinyproxy: Добавляет заголовок X-Tinyproxy со значением, например, IP-адресом клиента.
    ini X-Tinyproxy Yes

Фильтрация и контроль доступа

  • ConnectPort: Разрешает проксировать только соединения на определенные порты для метода CONNECT (используется для HTTPS). По умолчанию разрешены 443 и 563.
    ini ConnectPort 443 ConnectPort 80
  • Filter и FilterURLs: Позволяют использовать файл со списком URL-шаблонов для блокировки доступа.
    ini Filter "/etc/tinyproxy/filter" FilterURLs Yes # Применяет фильтр к URL, а не к хосту
    Пример файла /etc/tinyproxy/filter:
    *.badsite.com /ads/
  • Deny: Запрещает доступ с определенных IP-адресов или подсетей. Директивы Allow и Deny обрабатываются в порядке их следования в файле.

Цепочка прокси-серверов (Upstream)

Tinyproxy может пересылать запросы на другой прокси-сервер.
* Upstream: Указывает вышестоящий прокси-сервер для всех запросов.
ini Upstream proxy.example.com:8080
* Upstream с условием: Можно указать вышестоящий прокси для определенных доменов или URL.
ini Upstream ftp ftp.example.com:8080 Upstream socks5 example.com:1080 ".example.com" Upstream no-cache ".no-cache.example.com"
Поддерживаемые протоколы для Upstream: http, https, socks4, socks5, socks4a, socks5h.

Использование Tinyproxy

После настройки и запуска Tinyproxy, клиенты могут использовать его, указав IP-адрес сервера и порт Tinyproxy в настройках прокси своей операционной системы или браузера.

Например, для 192.168.1.100 на порту 8888:
* HTTP Proxy: 192.168.1.100:8888
* HTTPS Proxy: 192.168.1.100:8888 (Tinyproxy работает как HTTP Connect прокси для HTTPS)

Безопасность

Конфигурация безопасности Tinyproxy включает несколько ключевых аспектов:

  1. Сетевой экран (Firewall): Ограничьте доступ к порту Tinyproxy только для доверенных IP-адресов или подсетей.
    • UFW (Ubuntu/Debian):
      bash sudo ufw allow from 192.168.1.0/24 to any port 8888 sudo ufw enable
    • Firewalld (CentOS/RHEL/Fedora):
      bash sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8888" protocol="tcp" accept' sudo firewall-cmd --reload
  2. Директива Allow: В файле tinyproxy.conf используйте директиву Allow для явного указания разрешенных IP-адресов. Никогда не используйте Allow 0.0.0.0/0 без строгого контроля на уровне сетевого экрана.
  3. Запуск от непривилегированного пользователя: Tinyproxy по умолчанию работает от имени пользователя nobody и группы nogroup. Это снижает потенциальный ущерб в случае компрометации прокси.
  4. Обновления: Регулярно обновляйте пакет Tinyproxy, чтобы получать исправления безопасности.

Мониторинг и логирование

Tinyproxy ведет логи в файл, указанный директивой LogFile. По умолчанию это /var/log/tinyproxy/tinyproxy.log.

Пример записи в логе:

[20/Oct/2023:10:30:05 +0300] "GET http://example.com/ HTTP/1.1" 200 1256 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"

Формат логов аналогичен формату Apache combined log format, что позволяет использовать стандартные инструменты анализа логов.

Сравнение с альтернативами

Tinyproxy часто сравнивают с более функциональными прокси-серверами.

Характеристика Tinyproxy Squid Nginx (как прокси)
Тип HTTP/HTTPS (CONNECT) Forward Proxy HTTP/HTTPS (CONNECT) Forward/Reverse Proxy, Caching HTTP/HTTPS Reverse Proxy, (Forward Proxy с модулями)
Сложность настройки Низкая Средняя/Высокая Средняя/Высокая
Потребление ресурсов Очень низкое (CPU, RAM) Среднее/Высокое Низкое/Среднее
Кэширование Нет (ограниченное, только в памяти) Расширенное, на диске Возможно с модулями
Аутентификация Только по IP-адресам (Allow/Deny) Различные методы (Basic, Digest, NTLM, LDAP) Различные методы (Basic, Digest, LDAP)
Фильтрация URL Базовая (по файлу со списком) Расширенная (ACL, регексы) Расширенная (регексы, модули)
SSL/TLS Termination Нет (только CONNECT) Да Да
Основное назначение Простой прокси, локальная разработка, обход ограничений Корпоративный прокси, кэширование, безопасность Балансировка нагрузки, веб-сервер, обратный прокси

Tinyproxy оптимален для задач, где не требуется сложное кэширование, аутентификация пользователей или глубокая инспекция трафика, а приоритет отдается минимальному потреблению ресурсов и простоте.

Устранение неполадок

При возникновении проблем с Tinyproxy, выполните следующие шаги:

  1. Проверка статуса сервиса:
    bash sudo systemctl status tinyproxy
    Убедитесь, что сервис запущен и не содержит ошибок.
  2. Проверка логов:
    bash sudo tail -f /var/log/tinyproxy/tinyproxy.log
    Ищите сообщения об ошибках или предупреждениях, которые могут указывать на проблему.
  3. Проверка конфигурации:
    • Убедитесь, что Port корректно указан и не занят другим процессом.
    • Проверьте директивы Allow и Deny. Возможно, ваш IP-адрес заблокирован.
    • Убедитесь, что Listen указан правильно, если вы не прослушиваете все интерфейсы.
  4. Проверка сетевого экрана:
    Убедитесь, что порт Tinyproxy открыт в файрволе для нужных IP-адресов.
    bash sudo ufw status # Для UFW sudo firewall-cmd --list-all # Для Firewalld
  5. Тестирование локально: Попробуйте использовать прокси с того же сервера, где он установлен (например, с curl).
    bash curl -x http://127.0.0.1:8888 http://example.com/
    Если это работает, но удаленный доступ нет, проблема, вероятно, в сетевом экране или директивах Allow/Listen.
  6. Права доступа: Убедитесь, что пользователь nobody (или указанный в User) имеет права на чтение конфигурационного файла и запись в лог-файл.
Обновлено: 04.03.2026
Назад к категории

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира