当前位置: 首页 > 知识库问答 >
问题:

Nginx+Express+socket.io解决方案

冯亮
2023-03-14

正如我们所知,目前nginx稳定版本不能代理tcp连接。因此,如果express和Socket.io在同一个端口上工作,我们需要使用其他代理解决方案。

但还有其他方法可以绕过这个问题:

  1. 如果我们将socket.io设置为侦听不同的端口,那么express将侦听。例如:nginx代理80端口到8000端口,express侦听8000端口,socket.io侦听8001端口,客户机直接连接到socket.io到8001端口。
  2. 使用nginx_tcp_proxy_module可以代理tcp连接,但不能在同一端口上使用http。所以我们使用这样的解决方案:nginx代理80端口到8000端口,81端口(用于websockets)到8001,express侦听8000端口,socket.io侦听8001端口,client连接到socket.io到81端口。

这些方法有哪些优点和缺点?

共有1个答案

顾俊楚
2023-03-14

我更喜欢在前面使用Haproxy,并且只有一个公共开放端口。“根”是按路径进行的。

配置看起来像这样(您可以很容易地找到许多教程/资源)

frontend all 0.0.0.0:80

    acl is_websocket path_beg /websocket/
    use_backend nodejs if is_websocket
    default_backend nginx

backend nodejs
   server srv_node 127.0.0.1:16852

backend nginx
   balance roundrobin
   server srv_static 127.0.0.1:8080
 类似资料:
  • 我试图在我的应用程序上使用SSL,使用express和nginx运行socket.io,但我无法使其工作。我已经做了我的研究,但我发现的都不起作用。 我一直有错误:ERR_CONNECTION_CLOSED在客户端没有http状态代码。 我做错了什么?

  • 我刚刚开始使用Socket.io,我对Express有一些经验。我知道socket.io有双向通信,而express只是客户端到服务器。 这让我想,为什么我们不使用不同名称空间的socket.io,而完全不用express呢? 在哪些情况下我应该使用socket vs express? 在我需要双向通信的情况下,是否建议用express使客户机->服务器,然后对服务器->客户机使用套接字?

  • 本文向大家介绍Nginx tp3.2.3 404问题解决方案,包括了Nginx tp3.2.3 404问题解决方案的使用技巧和注意事项,需要的朋友参考一下 最近我把Apache给换成nginx,当我把tp项目搬过去运行的时候发现404 错误 ,原来是因为nginx不支持 pathinfo 模式,需要自己配置 下面我配置 在server配置里面 保存配置之后,重启 nginx ,配置成功 直接支持类

  • 问题内容: 使用Nginx时,我的套接字无法连接。我的配置文件是: 我的NodeJS是: 我的客户是 不用说,两者都不显示任何东西。我担心Nginx阻止了该请求,而节点却实际上从未收到它? 问题答案: 好像缺少了

  • 问题内容: 我对设置Socket.IO服务器+ Rails Web应用程序很感兴趣。但是,正如许多人所知,支持WebSocket的Web服务器并不多。到目前为止,这是我的两次尝试: 我尝试了Nginx模块路由。无法获得编译+配置的组合才能使此功能完全正常运行。我可能有些愚蠢。 http://www.letseehere.com/reverse-proxy-web- sockets 我尝试使用nod

  • 本文向大家介绍socket.io与pm2(cluster)集群搭配的解决方案,包括了socket.io与pm2(cluster)集群搭配的解决方案的使用技巧和注意事项,需要的朋友参考一下 socket.io与cluster 在线上系统中,需要使用node的多进程模型,我们可以自己实现简易的基于cluster模式的socket分发模型,也可以使用比较稳定的pm2这样进程管理工具。在常规的http服务