nchan: 现代网络的可扩展、灵活的发布/订阅服务器
安装
您可以在任何基于 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,于 2026 年 2 月 15 日发布。

Nchan 是一个可扩展、灵活的发布/订阅服务器,专为现代网络构建,作为 Nginx Web 服务器的模块。它可以配置为独立服务器,或作为您的应用程序与数百、数千或数百万个实时订阅者之间的中介。它可以在内存、磁盘上或通过 Redis 缓冲消息。所有连接都是异步处理的,并在任意数量的工作进程之间分配。它还可以与 Redis 扩展到多个 Nginx 服务器。
消息通过 HTTP POST 请求或 Websocket 发布到频道,并通过 Websocket、长轮询、EventSource(SSE)、传统的间隔轮询等方式进行订阅。
在 Web 浏览器中,您可以原生使用 Websocket 或 EventSource,或使用 NchanSubscriber.js 包装库。
特性
- RESTful、HTTP 原生 API
- 支持 Websocket、EventSource(服务器发送事件)、长轮询和其他基于 HTTP 的订阅者
- 每个频道可配置的消息缓冲区,提供无重复、无丢失的消息传递保证
- 通过单个订阅者连接订阅数百个频道
- HTTP 请求回调和钩子,便于集成
- 通过频道事件和 URL 进行性能统计监控
- 频道组使用情况的计量和限制
- 快速、非阻塞的共享内存本地消息存储,和可选的 Redis 持久存储
- 使用 Redis 进行水平扩展
- 通过 Redis 集群实现自动故障转移和高可用性
入门
在您的 nginx 配置中添加两个位置:
http {
server {
location = /sub {
nchan_subscriber;
nchan_channel_id $arg_id;
}
location = /pub {
nchan_publisher;
nchan_channel_id $arg_id;
}
}
}
您现在可以通过向 /pub?id=channel_id 发送 POST 数据来发布消息,并通过将 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;
}
长轮询
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 集群配置 - 频道事件和自省 - 安全最佳实践
GitHub
您可以在 nginx-module-nchan 的 GitHub 仓库 中找到此模块的其他配置提示和文档。