繁体   English   中英

带有节点js的套接字io未通过nginx proxy_pass连接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM