[英]socket io with node js is not connecting through nginx proxy_pass
问题是当我使用nginx时套接字没有建立。任何人都可以帮助我按照以下步骤将Socket oi与nginx集成。 我尝试了这个
location /field {
# the following is required for WebSockets
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
# supposedly prevents 502 bad gateway error;
# ultimately not necessary in my case
proxy_buffers 8 32k;
proxy_buffer_size 64k;
# the following is required
proxy_pass
proxy_redirect off;
# the following is required as well for WebSockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
tcp_nodelay on; # not necessary
}
首先检查您的nginx版本。 根据该页面,v1.3.13之后支持的websockets;
http://nginx.com/blog/nginx-nodejs-websockets-socketio/
然后将您的nginx conf与nginx博客中所述的以下配置进行比较;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 192.168.100.10:8010;
}
server {
listen 8020;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
http://nginx.com/blog/websocket-nginx/
此外,还要检查防火墙配置,以了解为socket.io服务器选择的端口。 (我了解到,某些ISP阻止了80和443以外的端口的websocket连接,请检查服务器是否使用tcpdump等接收数据包。)
如果到目前为止一切正常,请检查您的nginx错误日志(/var/log/nginx/error.log),以查看是否有与socket.io相关的错误消息。 您可以将其粘贴在此处进行进一步分析。
然后,如果nginx日志中没有套接字错误,则按以下所示的DEBUG模式启动节点应用程序;
DEBUG=* node yourfile.js
并检查是否将任何套接字连接消息打印到控制台。 您也可以将其粘贴以进行进一步分析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.