Startup.Configure и определяет порядок обработки каждого HTTP-запроса: от приема соединения и проксирования заголовков до проверки безопасности, авторизации и вызова контроллеров. Некоторые компоненты включаются условно в зависимости от init.conf.
На этой странице приведена полная последовательность middleware, описание каждого этапа и особенности жизненного цикла конфигурации.
Полная цепочка middleware
1
ForwardedHeaders
Обработка заголовков от reverse proxy (
X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host). Корректирует схему, хост и IP клиента.2
BaseMod
Базовая модификация запроса: установка культуры, обработка служебных заголовков, подготовка контекста для последующих middleware.
3
ModHeaders
Дополнительная обработка и нормализация HTTP-заголовков, требуемых модулями.
4
RequestInfo
Сбор метаданных запроса: тайминги, счетчики, идентификация маршрута. Данные используются статистикой (
/stats/request) и логированием.5
/nws WebSocket
При необходимости маппинг WebSocket-эндпоинта
/nws (NativeWebSocket). Проходит через WAF перед передачей в обработчик WebSocket.6
Routing
ASP.NET Core Routing: определение контроллера и действия по маршруту запроса.
7
Compression / Staticache
Сжатие ответа (Gzip/Brotli) и кеширование статических ответов через Staticache для анонимных запросов.
8
Ранний UseModule
Подписка на событие
EventListener.Middleware для модулей, которым требуется ранний доступ к конвейеру (например, для перехвата или модификации запроса до основной обработки).9
ProxyImg
Проксирование изображений и медиа:
/proxy/, /proxyimg, M3U8/MPD/DASH. Обработка через NetVips и потоковые прокси.10
StaticFiles
Отдача статических файлов из
wwwroot/: SISI UI, виджеты, JS-плагины, статистика.11
WAF
Web Application Firewall: геоблокировка (
countryAllow), белый список IP (whiteIps), защита от брутфорса (bruteForceProtection), лимиты запросов (limit_map). Если запрос не проходит проверку, возвращается ошибка 403.12
Authorization
ASP.NET Core Authorization: проверка политик доступа, настроенных для отдельных маршрутов.
13
Accsdb
Проверка учетных записей и сроков действия (
accsdb). Если включено, запросы без валидного аккаунта блокируются. Поддерживает формат user:YYYY-MM-DD и подробный JSON-массив users.14
Поздний UseModule
Второй этап вызова
UseModule для модулей, которым требуется доступ после авторизации и WAF.15
Лимиты, статистика, контроллеры, RCH
Финальные middleware: лимитирование запросов, сбор статистики (
openstat), маппинг контроллеров (MapControllers), RCH-эндпоинты (/rch/result, /rch/gzresult) и WebSocket /ws.Упрощенная схема
Точный порядок и наличие отдельных middleware зависит от
init.conf и флага BaseModule.Middlewares. Например, WAF и Accsdb можно отключить, а /nws маппируется только при активном использовании WebSocket.Жизненный цикл конфигурации
Конфигурация Lampac работает без перезапуска сервера. За это отвечаетCoreInit в проекте Shared.
1
Первоначальная загрузка
При первом обращении к
CoreInit загружается init.conf (и при наличии init.yaml). Значения из base.conf используются как fallback для отсутствующих параметров.2
Фоновый watcher
CoreInit запускает фоновый цикл с интервалом примерно 1 секунда, который отслеживает время изменения файлов конфигурации.3
Обновление при изменении
При обнаружении изменения вызывается
updateConf, обновляется CurrentConf, рассылается событие EventListener.UpdateInitFile, и модули перечитывают свои секции (например, через ModuleInvoke.Init).4
Резервные копии
Перед применением новой конфигурации создается резервная копия в каталоге
database/backup/init/. Также записывается файл current.conf с актуальным состоянием.Благодаря горячей перезагрузке вы можете менять порты, включать или отключать модули, редактировать WAF-листы и лимиты без остановки сервера. Изменения применяются в течение 1 секунды после сохранения файла.