Skip to main content
Цепочка middleware Lampac NextGen формируется в 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: concurrency limiter, статистика (openstat), MapControllers и RCH-эндпоинты /rch/result, /rch/gzresult, /rch/check/connected.

Упрощенная схема

Точный порядок и наличие отдельных 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 с актуальным состоянием.
Горячая перезагрузка обновляет секции модулей, подписанные на событие конфигурации. Порт/listener, состав скомпилированных модулей, manifest.json и регистрация middleware меняются только после перезапуска.
Last modified on September 2, 2026