nchan: Масштабируемый, гибкий сервер pub/sub для современного веба
Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-nchan
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-nchan
Активируйте модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:
load_module modules/ngx_nchan_module.so;
Этот документ описывает nginx-module-nchan v1.3.8, выпущенный 15 февраля 2026 года.

Nchan — это масштабируемый, гибкий сервер pub/sub для современного веба, созданный как модуль для веб-сервера Nginx. Его можно настроить как отдельный сервер или как промежуточный слой между вашим приложением и сотнями, тысячами или миллионами активных подписчиков. Он может буферизовать сообщения в памяти, на диске или через Redis. Все соединения обрабатываются асинхронно и распределяются между любым количеством рабочих процессов. Он также может масштабироваться до множества серверов Nginx с использованием Redis.
Сообщения публикуются в каналы с помощью HTTP POST запросов или Websocket, и подписываются через Websocket, long-polling, EventSource (SSE), старомодный опрос с интервалом и многое другое.
В веб-браузере вы можете использовать Websocket или EventSource нативно, или библиотеку-обертку NchanSubscriber.js.
Особенности
- RESTful, HTTP-ориентированный API
- Поддерживает Websocket, EventSource (События, отправляемые сервером), Long-Polling и другие подписчики на основе HTTP
- Конфигурируемые буферы сообщений на канал с гарантией доставки без повторений и потерь
- Подписка на сотни каналов через одно соединение подписчика
- Обратные вызовы и хуки для HTTP-запросов для легкой интеграции
- Интроспекция с событиями канала и URL для мониторинга статистики производительности
- Учет использования групп каналов и ограничения
- Быстрое, неблокирующее хранилище сообщений в общей памяти и опциональное постоянное хранилище с Redis
- Горизонтальное масштабирование с использованием Redis
- Автофейловер и высокая доступность с Redis Cluster
Начало работы
Добавьте два местоположения в вашу конфигурацию nginx:
http {
server {
location = /sub {
nchan_subscriber;
nchan_channel_id $arg_id;
}
location = /pub {
nchan_publisher;
nchan_channel_id $arg_id;
}
}
}
Теперь вы можете публиковать сообщения в канал, отправляя данные методом POST на /pub?id=channel_id, и подписываться, указывая Websocket или EventSource на sub/?id=channel_id.
Эндпоинты подписчика
Nchan поддерживает несколько типов подписчиков:
Websocket
location /sub {
nchan_subscriber websocket;
nchan_channel_id foobar;
}
EventSource
location /sub {
nchan_subscriber eventsource;
nchan_channel_id foobar;
}
Long-Polling
location /sub {
nchan_subscriber longpoll;
nchan_channel_id foobar;
}
Эндпоинты издателя
location /pub {
nchan_publisher;
nchan_channel_id foobar;
}
Опубликуйте сообщение:
curl -X POST -d "hello world" http://localhost/pub
Хранилище Redis
Для горизонтального масштабирования и постоянного хранения:
upstream redis_cluster {
nchan_redis_server redis://127.0.0.1:6379;
}
location /sub {
nchan_subscriber;
nchan_channel_id foobar;
nchan_redis_pass redis_cluster;
}
location /pub {
nchan_publisher;
nchan_channel_id foobar;
nchan_redis_pass redis_cluster;
}
Полная документация
Для получения полных директив конфигурации и подробной документации посетите официальную документацию Nchan.
Ключевые разделы в полной документации: - Мультиплексирование каналов - Хуки и обратные вызовы для авторизации - Конфигурация Redis Cluster для высокой доступности - События канала и интроспекция - Лучшие практики безопасности
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-nchan.