🔒 vAccess для Proxy-сервиса
Система контроля доступа для прокси-сервера, аналогичная vAccess для веб-сайтов.
📁 Структура
Proxy_vAccess/
├── _example_vAccess.conf - Пример конфигурации с комментариями
├── {domain}_vAccess.conf - Конфигурация для конкретного домена
└── README.md - Эта документация
🚀 Как использовать
1. Создание конфигурации
Для каждого прокси-домена создайте файл:
{ExternalDomain}_vAccess.conf
Пример:
git.example.ru_vAccess.conf
api.myservice.com_vAccess.conf
proxy.domain.org_vAccess.conf
2. Синтаксис конфигурации
Каждый блок правил начинается с комментария #
:
# Описание правила
type: Allow | Disable
path_access: /path1/*, /path2/*
ip_list: 192.168.1.1, 127.0.0.1
exceptions_dir: /public/*
url_error: 404 | https://site.com | /error.html
📋 Параметры правил
Параметр | Обязательный | Описание |
---|---|---|
type |
✅ Да | Allow - разрешить доступ, Disable - запретить |
type_file |
❌ Нет | Расширения файлов через запятую (*.json, *.pdf) |
path_access |
❌ Нет | Список путей через запятую |
ip_list |
❌ Нет | Список IP адресов через запятую |
exceptions_dir |
❌ Нет | Пути-исключения (правило не применяется) |
url_error |
❌ Нет | Страница ошибки при блокировке |
🔍 Примеры использования
Пример 1: Админка только с локальных IP
# Разрешаем админку только с определённых IP
type: Allow
path_access: /admin/*, /api/admin/*
ip_list: 127.0.0.1, 192.168.1.100
url_error: 404
Пример 2: Блокировка определённых IP
# Блокируем подозрительные IP для всего сервиса
type: Disable
ip_list: 10.0.0.50, 192.168.1.200
url_error: https://example.com/blocked
Пример 3: Защита внутренних API
# Блокируем доступ к служебным API
type: Disable
path_access: /internal/*, /private/*
exceptions_dir: /internal/health
url_error: 404
Пример 4: Доступ только с локальной сети
# Разрешаем доступ к API только с локальных адресов
type: Allow
path_access: /api/*
ip_list: 127.0.0.1, ::1, 192.168.0.0/16
url_error: 404
Пример 5: Блокировка опасных файлов
# Блокируем исполняемые файлы через прокси
type: Disable
type_file: *.php, *.exe, *.sh, *.bat
path_access: /uploads/*, /files/*
url_error: 404
Пример 6: Разрешить только определённые типы
# В API разрешаем только JSON и XML
type: Allow
type_file: *.json, *.xml, no_extension
path_access: /api/*
url_error: 404
Пример 7: Блокировка архивов
# Блокируем скачивание архивов с приватных путей
type: Disable
type_file: *.zip, *.rar, *.7z, *.tar.gz
path_access: /downloads/private/*
exceptions_dir: /downloads/private/public/*
url_error: https://example.com/access-denied
⚙️ Логика работы
- Порядок проверки: правила проверяются сверху вниз
- Первое совпадение: первое подходящее правило срабатывает
- Нет конфига = доступ разрешён: если файла нет, доступ не ограничен
- Allow правило: доступ разрешён ТОЛЬКО если ВСЕ условия выполнены
- Disable правило: доступ запрещён если ЛЮБОЕ условие выполнено
📊 Логирование
Все события vAccess для прокси записываются в:
WebServer/tools/logs/logs_vaccess_proxy.log
Формат логов:
[2025-10-03 00:45:23] [vAccess-Proxy] 🚫 Доступ запрещён для 192.168.1.50 к git.example.ru/admin
🔗 Связь с основной системой
vAccess для прокси использует ту же кодовую базу, что и vAccess для сайтов:
- Все функции парсинга, проверки IP, путей общие
- Изменения в логике автоматически применяются везде
- Единый стиль конфигурации
⚠️ Важные замечания
- IP-адреса берутся из соединения (не из заголовков прокси)
- Порядок правил важен - специфичные правила размещайте ВЫШЕ общих
- Проверка расширений работает - можно фильтровать по type_file даже для прокси
- Поддержка подсетей: можно использовать CIDR нотацию (192.168.0.0/24)
- Множественные расширения: поддержка файлов типа .tar.gz, .backup.sql
📞 Поддержка
При ошибках парсинга конфигурации:
- Проверьте синтаксис в
_example_vAccess.conf
- Убедитесь что у правила есть
type:
и хотя бы одно условие - Посмотрите логи в
logs_vaccess_proxy.log