socket.io + tcp socket + nginx 部署问题
发布于 8 年前 作者 wardenger 7598 次预览 最后一次回复是 8 年前 来自 问答
在本地运行时,http server, websocket, 以及tcp socket(net.Socket)都可以,但是部署到nginx上,tcp socket就一直访问不到。 不知道是哪里出来问题,求帮忙。。
这是server文件
这是tcp socket文件
这是nignx配置 tcp socket内容
目前 https 和 websocket都配置oK ,就是 TCP socket怎么都不行 已经用源码方式 安装了–with–stream
12 回复
表示关注,我写了一个socket.io服务端,测试性能不太好,可以交流下。
关注一下
mark
不用代理,直接连你那个
9010端口是正常的么?@yszou 连接不上,试过查看 防火墙的命令,显示的是未激活。
@wardenger 那先把系统层面的这些问题解决吧,你自己随便
http-server到指定端口,确定端口访问是通的。 (如果你是用的阿里云的机器,后台“安全策略”那里可以处理端口问题)@yszou 阿里云的安全策略默认是开启的。不过确实可以 telnet 443 和 80 ,9000端口 返回的是 timeout。
@wardenger 9000 ?我说的是 9010 。 你 nginx 的 upstream 写的是 9010 啊。(你打码后面那里) 同时你 nginx 监听的是 9000 ,但是你的 node 代码好像也是 9000 ,如果你截图是真实情况,那端口冲突了。
嗯。弄好了。
有两个点 一个点是阿里云的安全配置,socket连接需要单独配置。 第二个点就是 nginx upstream 里面应该写socket的监听地址。
啊啊啊,非常感谢。弄了好久。。 @yavana
一可能是防火墙 二可能是跨域了
@qingmingsang 已经弄好了,不是防火墙,防火墙是未激活的(我看了那个命令)。然后跨越也不是。还是感谢~
应该要在配置中升级协议。
注意上面的两个
proxy_set_header和proxy_http_version。参考:https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/