在本地运行时,http server, websocket, 以及tcp socket(net.Socket)都可以,但是部署到nginx上,tcp socket就一直访问不到。 不知道是哪里出来问题,求帮忙。。
这是server文件
屏幕快照 2017年09月01日 上午12.07.57.png
这是tcp socket文件 屏幕快照 2017年09月01日 上午12.10.29.png
这是nignx配置 tcp socket内容
屏幕快照 2017年09月01日 上午12.12.54.png
目前 https 和 websocket都配置oK ,就是 TCP socket怎么都不行 已经用源码方式 安装了–with–stream
@wardenger
那先把系统层面的这些问题解决吧,你自己随便 http-server 到指定端口,确定端口访问是通的。
(如果你是用的阿里云的机器,后台"安全策略"那里可以处理端口问题)
@wardenger 9000 ?我说的是 9010 。 你 nginx 的 upstream 写的是 9010 啊。(你打码后面那里) 同时你 nginx 监听的是 9000 ,但是你的 node 代码好像也是 9000 ,如果你截图是真实情况,那端口冲突了。
嗯。弄好了。
有两个点
一个点是阿里云的安全配置,socket连接需要单独配置。
第二个点就是 nginx upstream 里面应该写socket的监听地址。
啊啊啊,非常感谢。弄了好久。。 @yavana
应该要在配置中升级协议。
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://socket_nodes;
}
注意上面的两个 proxy_set_header 和 proxy_http_version。
参考:https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/