Перейти к содержанию

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 года.


https://nchan.io

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.