Files
vServer/README.md
Falknat 93bed4a458 Доработка Proxy Server
Вынес настройки в конфигурацию, обновил Readme
2025-10-02 08:58:22 +07:00

7.6 KiB
Raw Blame History

🚀 vServer - Функциональный веб-сервер на Go

Функциональный веб-сервер с поддержкой HTTP/HTTPS, MySQL, PHP и веб-админкой

👨‍💻 Автор: Суманеев Роман
🌐 Сайт: voxsel.ru
📞 Контакт: VK

🎯 Возможности

🌐 Веб-сервер

  • HTTP/HTTPS сервер с поддержкой SSL сертификатов
  • Proxy сервер для проксирования запросов
  • PHP сервер со встроенной поддержкой PHP 8
  • Статический контент для размещения веб-сайтов

🗄️ База данных

  • MySQL сервер с полной поддержкой

🔧 Администрирование

  • Веб-админка на порту 5555 с мониторингом
  • Консольное управление через командную строку
  • Логирование всех операций
  • Конфигурация через JSON файлы

🏗️ Архитектура

vServer/
├── 🎯 main.go              # Точка входа
│
├── 🔧 Backend/             # Основная логика
│   │
│   ├── admin/              # | 🎛️ Веб-админка (порт 5555) |
│   ├── config/             # | 🔧 Конфигурационные файлы Go |
│   ├── tools/              # | 🛠️ Утилиты и хелперы |
│   └── WebServer/          # | 🌐 Модули веб-сервера |
│
├── 🌐 WebServer/           # Веб-контент и конфигурация
│   │
│   ├── cert/               # | 🔐 SSL сертификаты |
│   ├── soft/               # | 📦 MySQL и PHP |
│   ├── tools/              # | 📊 Логи и инструменты |
│   └── www/                # | 🌍 Веб-контент |
│
└── 📄 go.mod               # Go модули

🚀 Установка и запуск

🔨 Сборка проекта

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:

{
  "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",
      "UseHTTPS": false
    }
  ],
  "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 - порт локального сервиса
  • UseHTTPS - использовать HTTPS для локального подключения (true/false)

Пример множественных прокси:

"Proxy_Service": [
  {
    "Enable": true,
    "ExternalDomain": "git.example.com",
    "LocalAddress": "127.0.0.1",
    "LocalPort": "3000",
    "UseHTTPS": false
  },
  {
    "Enable": false,
    "ExternalDomain": "api.example.com",
    "LocalAddress": "127.0.0.1",
    "LocalPort": "8080",
    "UseHTTPS": false
  }
]

Применение изменений:

  • Введите команду config_reload в консоли для перезагрузки конфигурации
  • Изменения применятся к новым запросам без перезапуска сервера

📝 Логирование

Все логи сохраняются в 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 - Контроль доступа

🔐 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-сертификатов: достаточно одного сертификата в папке основного домена для всех поддоменов! 🌟