Ядро NGINX open source · функциональность NGINX Plus

На базе NGINX.
Plus — целиком.
И дальше.

ngx-sharp берёт открытый сервер NGINX, который у вас уже работает, и надстраивает над ним полный корпоративный слой NGINX Plus: API v9, активные проверки работоспособности, зоны «ключ-значение», синхронизацию зон, JWT/JWE и OIDC. А затем идёт дальше — HTTP/3 по обе стороны прокси.

Путь трафика ngx-sharp Клиенты подключаются по HTTP/1.1, HTTP/2 и HTTP/3. ngx-sharp проксирует запросы к upstream-серверам по HTTP/1.1, HTTP/2 и HTTP/3, обслуживает TCP- и UDP-трафик, предоставляет плоскость управления NGINX Plus API v9 и синхронизирует состояние со вторым узлом. ПЛОСКОСТЬ УПРАВЛЕНИЯ GET /api/9 · POST /api/9/http/upstreams Клиенты БРАУЗЕРЫ МОБАЙЛ · API Upstream СЕРВИСЫ GRPC · FASTCGI ngx-sharp API V9 · CONTROL API АКТИВНЫЕ ПРОВЕРКИ KEYVAL · STATE-ФАЙЛЫ JWT / JWE · OIDC STICKY · SLOW START ОЧЕРЕДЬ · LEAST TIME QUIC · HTTP/3 HTTP/1.1 · H2 · H3 HTTP/1.1 · H2 · H3 proxy_http_version 3 TCP · UDP · TLS PREREAD STREAM · MQTT · MAIL СИНХРОНИЗАЦИЯ ЗОН KEYVAL · RATE LIMIT · STICKY-LEARN NGX-SHARP · УЗЕЛ 02 ВЗАИМНАЯ АУТЕНТИФИКАЦИЯ TLS
РИС. 01 — ПУТЬ ТРАФИКА H3 НА ВХОДЕ · H3 НА ВЫХОДЕ
§ 01

Одно решение о платформе.
Восемь проектов миграции.

Компании стандартизируются на NGINX, потому что он компактен, предсказуем и всем понятен. Но операционная зависимость редко ограничивается обратным проксированием. Смените платформу — и одно закупочное решение развернётся в параллельные инженерные проекты:

  • 01 Переписать API-клиентов и дашборды
  • 02 Переработать конфигурации, заменить проприетарные директивы
  • 03 Сменить имена пакетов, пути, сервисы, автоматизацию
  • 04 Перепроектировать идентификацию и закрепление сессий
  • 05 Заменить активные проверки и динамическое управление upstream
  • 06 Заменить межузловое состояние keyval и лимитов запросов
  • 07 Пересертифицировать динамические модули и регламенты
  • 08 Принять чужой жизненный цикл продукта и чужую дорожную карту

ngx-sharp снимает первые семь пунктов, сохраняя операционную модель NGINX Plus — и отвечает на восьмой, помещая пакет, релизный процесс, портированные возможности и дорожную карту под независимый продукт.

§ 02

Поверхность совместимости

В рамках целевой операционной модели NGINX Plus ngx-sharp спроектирован как замена «на месте». Миграция превращается в задачу стенда и валидации, а не в редизайн.

ТАБЛ. 01 — МОДЕЛЬ ПРЯМОЙ ЗАМЕНЫ
Поверхность совместимостиПоведение ngx-sharp
Исполняемый файл и сервисСохраняет исполняемый файл nginx и идентичность сервиса
КонфигурацияСтандартный префикс конфигурации NGINX, синтаксис и директивы NGINX Plus
Логи, PID, кэш, состояниеСохраняет привычную файловую раскладку NGINX
Динамические модулиСтандартный каталог модулей; объявляет целевой ABI nginx-plus-r37.0
Переход в DebianОбъявляет стандартные отношения замены для пакетов nginx и nginx-plus
Автоматизация мониторингаСохраняет версионированный NGINX Plus API вплоть до v9 и совместимость с ранними версиями
Конфигурация во время работыСохраняет запись через API для зонированных upstream и keyval; изменения переживают перезапуск
Управление процессомСодержит Control REST API NGINX Plus наряду со стандартными сигналами Unix
Проверки и балансировкаАктивные проверки, least time, режимы sticky, медленный старт, очереди запросов
ИдентификацияJWT/JWE в стиле Plus и нативный OIDC relying party
Кластерное состояниеСинхронизация зон в стиле Plus: keyval, лимиты запросов, sticky-learn
Поддерживаемые платформыПакеты для тех же операционных систем и выпусков, что и NGINX Plus
ДистрибуцияПакеты с подписью GPG в приватном APT-репозитории с взаимным TLS

У «прямой замены» есть точная граница. ngx-sharp ABI-совместим с NGINX Plus и сохраняет его операционные контракты, поэтому динамические модули NGINX Plus подключаются без изменений. Это независимый продукт, а не бинарник F5.

§ 03

Что входит в пакет

Интегрированные корпоративные функции NGINX Plus — одним бинарником и одним Debian-пакетом. Корпоративная плоскость управления встроена, а не собрана из сторонних модулей.

ФУНКЦИЯ 01

Веб-сервер и прокси, совместимые с NGINX

Стандартное событийное ядро без изменений в поведении и модели конфигурации.

  • Статика, обратное проксирование, кэширование контента
  • FastCGI, uWSGI, SCGI, Memcached, шлюз gRPC
  • Терминация TLS и TLS до upstream-серверов
  • Сжатие, range-запросы, слайсинг, secure link, зеркалирование
  • Асинхронный файловый ввод-вывод, рабочие потоки, njs
ФУНКЦИЯ 02

Версионированные API статистики и управления

Версионированная модель данных JSON вплоть до API v9, с эндпоинтами совместимости для ранних версий.

  • Соединения, запросы, процессы и воркеры
  • Зоны серверов и upstream-пиры для HTTP и Stream
  • Здоровье, доступность, простой, задержки, ответы
  • Кэши, резолверы, лимиты, keyval, статистика TLS
  • Control REST API NGINX Plus для управления процессом
ФУНКЦИЯ 03

Активные проверки работоспособности

Пробы выполняются независимо от пользовательского трафика: отказавший бэкенд выходит из ротации раньше, чем его найдёт продакшн.

  • Настраиваемые интервалы, таймауты и пороги
  • Сопоставление статуса, заголовков и тела по HTTP и HTTPS
  • Проверки gRPC; проверки TCP и UDP в Stream
  • Состояние и счётчики проверок доступны через API
  • Работает с динамически добавленными и удалёнными пирами
ФУНКЦИЯ 04

Продвинутое распределение трафика

Корпоративные механизмы балансировки для боевого трафика, а не только round robin.

  • Least connections, hash, IP hash, random, least time
  • Медленный старт для восстановленных и новых серверов
  • Очереди запросов, когда все подходящие серверы заняты
  • Sticky в режимах cookie, route и learn
  • Веса, лимиты, backup, down и drain
ФУНКЦИЯ 05

Хранилища «ключ-значение» для HTTP и Stream

Данные времени выполнения становятся переменными NGINX без перезагрузки — внутри той же API- и sync-модели, что и остальная платформа.

  • Динамические списки запрета и разрешения
  • Маршрутизация по клиентам и тенантам
  • Флаги функций и переключатели техработ
  • Маршрутизация и контроль доступа в Stream
  • Записи с TTL и сохранением, управляемые через API
ФУНКЦИЯ 06

Синхронизация состояния между узлами

Живое состояние обработки запросов разделяется между узлами — это не копирование конфигурационных файлов.

  • Записи keyval для HTTP и Stream
  • Состояние лимитов запросов
  • Состояние сессий sticky-learn
  • Кластерные соединения со взаимной аутентификацией
  • Независимые узлы, согласованность в конечном счёте
ФУНКЦИЯ 07

Идентификация на шлюзе

Политики применяются до того, как трафик дойдёт до приложения, без сборки аутентификации из Lua, сайдкаров и middleware.

  • Проверка подписи и claim-ов JWT
  • Расшифровка JWE и работа с зашифрованными токенами
  • Ключи из файлов, переменных или удалённых JWKS
  • Нативные потоки OpenID Connect relying party
  • Обмен кода, сессии, refresh, logout, метаданные IdP
ФУНКЦИЯ 08

HTTP/3 по обе стороны

Входящий QUIC от клиентов и исходящий HTTP/3 к проксируемым сервисам — в одной платформе.

  • Соединения HTTP/3 до upstream-сервисов
  • Настраиваемое поведение QUIC и сжатия заголовков
  • Переиспользование соединений в жизненном цикле upstream
  • Соединения переживают reload и обновление бинарника
  • Статистика HTTP/3 и TLS в том же API
ФУНКЦИЯ 09

L4, протоколы и медиа

Помимо обычного HTTP-проксирования, подсистемы Stream и mail поставляются в том же пакете.

  • Балансировка нагрузки TCP и UDP
  • Проверки, keyval, least time и sync зон в Stream
  • TLS preread и маршрутизация Stream по SNI
  • PROXY protocol, включая вендорские расширения
  • MQTT preread, прокси POP3/IMAP/SMTP, HLS и F4F
ФУНКЦИЯ 10

Мониторинг и наблюдаемость

Операционные данные и готовое к развёртыванию представление для инструментов, которые у вас уже есть.

  • Подробная JSON-статистика API v9
  • Лёгкий stub_status там, где его ждут старые инструменты
  • Веб-дашборд для данных API в составе пакета
  • Пакет экспортера Prometheus
  • Статистика по зонам, upstream-группам и воркерам
ФУНКЦИЯ 11

Продакшн-упаковка

Спроектирована так, чтобы войти на существующий хост NGINX с минимальными операционными изменениями.

  • Стандартная файловая и сервисная раскладка NGINX
  • Состояние сохраняется между перезапусками
  • Заменяет пакеты nginx и nginx-plus на месте
  • Те же операционные системы и выпуски, что и у NGINX Plus
  • Сопутствующие пакеты njs и Prometheus
ФУНКЦИЯ 12

Модули от ngx-sharp

Опциональные возможности не вкомпилированы — они поставляются динамическими модулями, которые ngx-sharp собирает и выпускает сам.

  • Собираются и версионируются вместе с сервером
  • Выходят по одному графику с релизами
  • Сертификаты, Brotli, Lua, OpenTelemetry, геолокация и другие
  • Рассчитаны на ABI модулей NGINX Plus
  • Один поставщик сервера и его модулей
§ 04

QUIC не заканчивается
на периметре.

Большинство платформ терминируют HTTP/3 на входе и уходят на HTTP/1.1 дальше по цепочке. ngx-sharp выходит за исходный уровень NGINX Plus: он умеет устанавливать соединения HTTP/3 и к проксируемым upstream-сервисам.

  • 01

    HTTP/3 до самого бэкенда

    Клиенты приходят на периметр по QUIC, и периметр идёт к вашим сервисам тоже по QUIC — одна платформа, одна конфигурация, без понижения протокола в середине.

  • 02

    Настроено под реальный трафик

    Сжатие заголовков и управление потоком настраиваются и на входящем, и на исходящем пути, поэтому API с тяжёлыми заголовками не остаются на значениях по умолчанию.

  • 03

    Переживает рутинные операции

    QUIC-соединения продолжают работать при перезагрузке конфигурации и обновлении бинарника, поэтому повседневные изменения не рвут долгоживущие сессии.

  • 04

    Видно в привычных инструментах

    Статистика HTTP/3 и TLS отдаётся через тот же API, который уже читают ваши дашборды и сбор Prometheus. Новый путь наблюдаем так же, как старый.

NGINX.CONFПЕРИМЕТР → UPSTREAM
# QUIC на входе от клиентов
listen 443 quic reuseport;
listen 443 ssl;
http3 on;

location / {
    # ...и QUIC на выходе
    proxy_http_version 3;
    proxy_pass https://app_pool;
}

upstream app_pool {
    zone app_pool 1m;
    least_time header;
    server 10.0.3.11:443 slow_start=30s;
    server 10.0.3.12:443;
}
§ 05

Сравнение
с альтернативами

И NGINX Plus, и Angie PRO — сильные платформы. Вопрос не в том, у кого больше функций, а в том, на каком операционном контракте уже построена ваша инфраструктура.

ТАБЛ. 02 — ИНТЕГРИРОВАННЫЕ КОРПОРАТИВНЫЕ ФУНКЦИИ NGINX PLUS
Семейство функцийngx-sharpNGINX Plus
Data plane NGINX и модель конфигурацииЕстьОфициальная реализация
Расширенная статистика API v9ЕстьЕсть
API записи для upstreamЕстьЕсть
Control REST APIЕстьЕсть
Активные проверки HTTP, gRPC, TCP, UDPЕстьЕсть
Keyval для HTTP и StreamЕстьЕсть
Сохранение состояния между перезапускамиЕстьЕсть
Least time, медленный старт, очереди, stickyЕстьЕсть
Синхронизация зонЕстьЕсть
Аутентификация JWT/JWEЕстьЕсть
Нативный OIDC relying partyЕстьЕсть
Корпоративные модули HTTP и StreamЕстьЕсть
Дашборд и интеграция с PrometheusЕстьЕсть или пакетная интеграция
Соединения HTTP/3 к upstream-серверамСверх базового NGINX PlusНет в базовой линии
Независимые репозиторий, релизы и дорожная картаДаКонтролирует вендор
Набор динамических модулей (сертификаты, Brotli, Lua, OpenTelemetry…)Собирает и поставляет ngx-sharpОфициальный репозиторий F5
Происхождение и поддержка F5НетДа

«Полный набор функций» означает интегрированные корпоративные семейства функций NGINX Plus, поставляемые ngx-sharp, а не утверждение, что ngx-sharp является продуктом F5 или что в него включён каждый опциональный модуль из репозитория F5.

§ 06

Набор модулей
от ngx-sharp

В базовом пакете — интегрированная корпоративная плоскость управления. Всё опциональное поставляется динамическими модулями, и каждый из них ngx-sharp собирает, версионирует и выпускает сам — из того же дерева и по тому же графику, что и сам сервер. Модули рассчитаны на ABI модулей NGINX Plus, поэтому в том, как вы их подключаете и настраиваете, ничего не меняется.

  • Автоматические сертификатыВыпуск и продление по ACME без внешнего клиента
  • Аутентификация KerberosЕдиный вход по SPNEGO прямо на шлюзе
  • Сжатие BrotliBrotli для динамических ответов и статических файлов
  • Шифрованные переменные сессииДанные сессии в зашифрованных переменных
  • Проверка режима FIPSПодтверждает работу криптопровайдера в режиме FIPS
  • Геолокация, старые базыОпределение страны и города по базам MaxMind GeoIP
  • Геолокация, актуальные базыЗапросы к базам MaxMind GeoIP2 и GeoLite2
  • Работа с заголовкамиДобавление, удаление и правка заголовков
  • Обработка изображенийИзменение размера, обрезка и поворот на лету
  • Скриптинг на LuaСобственная логика внутри жизненного цикла запроса
  • Инструментарий скриптингаОбщая среда для модулей переменных и скриптов
  • Скриптинг njsJavaScript для конфигураций HTTP и Stream
  • Трассировка OpenTelemetryЭкспорт распределённых трассировок в ваш коллектор
  • Интеграция с PassengerЗапуск приложений на Ruby, Python и Node на месте
  • Встроенный PerlОбработчики и переменные Perl внутри конфигурации
  • Метрики PrometheusЭндпоинт метрик, отрисованный из API статистики
  • Потоковое вещание RTMPПриём RTMP с публикацией в HLS и DASH
  • Работа с переменнымиДополнительные операторы для построения переменных
  • Подстановка в теле ответаПоиск и замена в теле ответа
  • XSLT-преобразованиеСерверное преобразование XML-ответов

Сервер и его модули собирает один поставщик, поэтому релиз — это единое целое для аттестации, а не сервер плюс список отдельно версионируемых дополнений.

§ 07

Что такое ngx-sharp
и чем он не является

Закупки и архитектурные ревью держатся на точных формулировках. Вот утверждения, за которые мы отвечаем, и те, которых мы не сделаем никогда — письменно, до того как вы решитесь на пилот.

Что мы заявляем

  • ngx-sharp — независимая реализация, ориентированная на операционную модель NGINX Plus.
  • Это прямая пакетная и операционная замена для целевой модели NGINX Plus.
  • Он включает описанные здесь интегрированные корпоративные семейства функций NGINX Plus.
  • Он сохраняет API v9, Control API, активные проверки, keyval, JWT/JWE, OIDC, продвинутую балансировку и синхронизацию зон.
  • Он включает входящий и исходящий HTTP/3.
  • Его пакет, релизные решения и дорожная карта контролируются независимо.

Чего мы не заявляем никогда

  • Что ngx-sharp является NGINX Plus, выпускается F5 или поддерживается F5.
  • Двоичную или побитовую идентичность с официальной сборкой F5.
  • Что включена каждая функция каждого текущего релиза NGINX Plus или Angie PRO.
  • Всеобщее превосходство по производительности, поддержке, соответствию требованиям или цене.

Сохраните плоскость управления.
Смените поставщика.

Приносите свою конфигурацию, своих API-клиентов, свои дашборды и свой список модулей. Квалифицированный пилот проходит на вашей инфраструктуре, на вашем стенде и с сохранённым путём отката.