月度归档:2014年08月

阿里云启用Web攻击拦截后导致socket.io异常

部署完运行了一年没有出什么状况,最近发现WebSocket连接异常,在尝试建立WebSocket连接时服务器断开。node.js 提示 warn – websocket connection invalid 。

无奈先设置socket.io为轮询优先,先顶上保证业务。

 

部署环境:

nginx1.5.4+node.js+express+socke.io

nginx监听80端口,socket.io监听3000端口,nginx根据域名代理。

问题描述:

1.远程访问WebSocket无法连接80端口,但是不通过nginx直接访问3000端口正常连接,chrome版本 36.0.1985.143 m

2.服务器上本地访问80,3000都正常。chrome版本 35.0.XXX

问题诊断:

1.首先排除chrome浏览器版本问题,升级服务器上chrome版本到36,依旧正常。

2.最近更新过一次服务器业务逻辑代码,但从未更新socket.io版本。根据现象初步估计为nginx代理有问题。

反复修改conf文件 reload,问题依旧。nginx -s reload

3.为了排除nginx影响,停用nginx -s quit ,node.js直接listen80端口。远程访问问题依旧。

4.找到参考资料中的文章,想到可能是阿里云的问题。才记起最近启动了新出的web攻击拦截功能。停用几分钟后。问题解决。

 

Web攻击拦截

QQ截图20140827172003

 

参考资料:

http://nolanlawson.com/2013/05/31/web-sockets-with-socket-io-node-js-and-nginx-port-80-considered-harmful/