Files
vServer/README.md
Falknat d11834da37 Добавление vAccess для Proxy
Теперь наши правила работают так же для Proxy серверов.
2025-10-03 01:04:50 +07:00

261 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 vServer - Функциональный веб-сервер на Go
> Функциональный веб-сервер с поддержкой HTTP/HTTPS, MySQL, PHP и веб-админкой
**👨‍💻 Автор:** Суманеев Роман
**🌐 Сайт:** [voxsel.ru](https://voxsel.ru)
**📞 Контакт:** [VK](https://vk.com/felias)
## 🎯 Возможности
### 🌐 Веб-сервер
-**HTTP/HTTPS** сервер с поддержкой SSL сертификатов
-**Proxy сервер** для проксирования запросов
-**PHP сервер** со встроенной поддержкой PHP 8
-**Статический контент** для размещения веб-сайтов
-**vAccess** - система контроля доступа для сайтов и прокси
### 🗄️ База данных
-**MySQL сервер** с полной поддержкой
### 🔧 Администрирование
-**Веб-админка** на порту 5555 с мониторингом
-**Консольное управление** через командную строку
-**Логирование** всех операций
-**Конфигурация** через JSON файлы
## 🏗️ Архитектура
```
vServer/
├── 🎯 main.go # Точка входа
├── 🔧 Backend/ # Основная логика
│ │
│ ├── admin/ # | 🎛️ Веб-админка (порт 5555) |
│ ├── config/ # | 🔧 Конфигурационные файлы Go |
│ ├── tools/ # | 🛠️ Утилиты и хелперы |
│ └── WebServer/ # | 🌐 Модули веб-сервера |
├── 🌐 WebServer/ # Веб-контент и конфигурация
│ │
│ ├── cert/ # | 🔐 SSL сертификаты |
│ ├── soft/ # | 📦 MySQL и PHP |
│ ├── tools/ # | 📊 Логи и инструменты |
│ └── www/ # | 🌍 Веб-контент |
└── 📄 go.mod # Go модули
```
## 🚀 Установка и запуск
### 🔨 Сборка проекта
```bash
go build -o MyApp.exe
```
### 📦 Подготовка компонентов
1. Распакуйте архив `WebServer/soft/soft.rar` в папку `WebServer/soft/`
2. Запустите скомпилированный файл `MyApp.exe`
> 🔑 **Важно:** Пароль MySQL по умолчанию - `root`
### 📦 Готовый проект для пользователя
Для работы приложения необходимы только:
- 📄 `MyApp.exe` - исполняемый файл
- 📁 `WebServer/` - папка с конфигурацией и ресурсами
> 💡 Папка `Backend/` и файлы `go.mod`, `main.go` и т.д. нужны только для разработки
## ⚙️ Конфигурация
Настройка через `WebServer/config.json`:
```json
{
"Site_www": [
{
"name": "Локальный сайт",
"host": "127.0.0.1",
"alias": ["localhost"],
"status": "active",
"root_file": "index.html",
"root_file_routing": true
}
],
"Proxy_Service": [
{
"Enable": true,
"ExternalDomain": "git.example.ru",
"LocalAddress": "127.0.0.1",
"LocalPort": "3333",
"ServiceHTTPSuse": false,
"AutoHTTPS": true
}
],
"Soft_Settings": {
"mysql_port": 3306, "mysql_host": "192.168.1.6",
"php_port": 8000, "php_host": "localhost",
"admin_port": "5555", "admin_host": "localhost"
}
}
```
**Основные параметры:**
- `Site_www` - настройки веб-сайтов
- `Proxy_Service` - конфигурация прокси-сервисов
- `Soft_Settings` - порты и хосты сервисов (MySQL, PHP, админка)
### 🔄 Прокси-сервер
Прокси-сервер позволяет перенаправлять внешние запросы на локальные сервисы.
**Параметры Proxy_Service:**
- `Enable` - включить/отключить прокси (true/false)
- `ExternalDomain` - внешний домен для перехвата запросов
- `LocalAddress` - локальный адрес сервиса
- `LocalPort` - порт локального сервиса
- `ServiceHTTPSuse` - использовать HTTPS для подключения к локальному сервису (true/false)
- `AutoHTTPS` - автоматически перенаправлять HTTP → HTTPS (true/false)
**Пример множественных прокси:**
```json
"Proxy_Service": [
{
"Enable": true,
"ExternalDomain": "git.example.com",
"LocalAddress": "127.0.0.1",
"LocalPort": "3000",
"ServiceHTTPSuse": false,
"AutoHTTPS": true
},
{
"Enable": false,
"ExternalDomain": "api.example.com",
"LocalAddress": "127.0.0.1",
"LocalPort": "8080",
"ServiceHTTPSuse": false,
"AutoHTTPS": false
}
]
```
#### 📖 Подробное описание параметров:
**`ServiceHTTPSuse`** - протокол подключения к локальному сервису:
- `false` - vServer подключается к локальному сервису по HTTP (по умолчанию)
- `true` - vServer подключается к локальному сервису по HTTPS
**`AutoHTTPS`** - автоматический редирект на HTTPS:
- `true` - все HTTP запросы автоматически перенаправляются на HTTPS (рекомендуется)
- `false` - разрешены как HTTP, так и HTTPS запросы
**Схема работы:**
```
Клиент (HTTP/HTTPS) → vServer (проверка AutoHTTPS) → Локальный сервис (ServiceHTTPSuse)
```
**Применение изменений:**
- Введите команду `config_reload` в консоли для перезагрузки конфигурации
- Изменения применятся к новым запросам без перезапуска сервера
## 🔒 vAccess - Система контроля доступа
vServer включает гибкую систему контроля доступа **vAccess** для сайтов и прокси-сервисов.
### 📁 Расположение конфигураций
**Для сайтов:**
```
WebServer/www/{host}/vAccess.conf
```
**Для прокси:**
```
WebServer/tools/Proxy_vAccess/{domain}_vAccess.conf
```
### ⚙️ Основные возможности
-**IP-фильтрация** - разрешение/блокировка по IP адресам
-**Контроль путей** - ограничение доступа к определённым директориям
-**Фильтрация файлов** - блокировка по расширениям (*.php, *.exe)
-**Исключения** - гибкие правила с exceptions_dir
-**Кастомные ошибки** - редиректы или страницы ошибок
### 📝 Пример конфигурации
```conf
# Разрешаем админку только с локальных IP
type: Allow
path_access: /admin/*, /api/admin/*
ip_list: 127.0.0.1, 192.168.1.100
url_error: 404
# Блокируем опасные файлы в uploads
type: Disable
type_file: *.php, *.exe, *.sh
path_access: /uploads/*
url_error: 404
```
### 📚 Документация
Подробная документация по vAccess:
- **Для сайтов:** см. `WebServer/www/{host}/vAccess.conf` (примеры в файле)
- **Для прокси:** см. `WebServer/tools/Proxy_vAccess/README.md`
## 📝 Логирование
Все логи сохраняются в `WebServer/tools/logs/`:
- 🌐 `logs_http.log` - HTTP запросы (включая прокси P-HTTP)
- 🔒 `logs_https.log` - HTTPS запросы (включая прокси P-HTTPS)
- 🔄 `logs_proxy.log` - Ошибки прокси-сервера
- 🗄️ `logs_mysql.log` - MySQL операции
- 🐘 `logs_php.log` - PHP ошибки
- ⚙️ `logs_config.log` - Конфигурация
- 🔐 `logs_vaccess.log` - Контроль доступа для сайтов
- 🔐 `logs_vaccess_proxy.log` - Контроль доступа для прокси
## 🔐 SSL Сертификаты
### Установка сертификата
1. Откройте каталог `WebServer/`
2. Создайте папку `cert/` (если её нет)
3. Создайте папку с именем вашего домена или IP-адреса
4. Поместите в неё файлы сертификатов с **точными** именами:
```
certificate.crt
private.key
ca_bundle.crt
```
5. Сертификат будет автоматически загружен при запуске сервера
### 📁 Структура сертификатов
```
WebServer/
└── cert/
├── example.com/ # Основной домен
│ ├── certificate.crt
│ ├── private.key
│ └── ca_bundle.crt
└── sub.example.com/ # Поддомен (опционально)
├── certificate.crt
├── private.key
└── ca_bundle.crt
```
### 🎯 Работа с поддоменами
**Важно:** Если для поддомена не создана отдельная папка в `cert/`, то автоматически будет использоваться сертификат родительского домена.
**Примеры:**
- ✅ Запрос к `example.com` → использует сертификат из `cert/example.com/`
- ✅ Запрос к `sub.example.com` (папка существует) → использует `cert/sub.example.com/`
- ✅ Запрос к `sub.example.com` (папка НЕ существует) → использует `cert/example.com/`
**Это удобно для wildcard-сертификатов:** достаточно одного сертификата в папке основного домена для всех поддоменов! 🌟