Linode服务器上的Nginx + nodejs + socket.io websockets

我正在尝试在Linode服务器上configurationnodejs,socket.io和nginx

为此,我创build了虚拟主机。

nginx.conf

 # Add to nginx.conf http section map $http_upgrade $connection_upgrade { default upgrade; '' close; } 

socket.example.com

 upstream some_upsteram_com { server 127.0.0.1:8888; keepalive 15; } server { listen 80; root /var/www/node-socket-app; index index.html index.htm; access_log /home/user/logs/socket-access.log; error_log /home/user/logs/socket-error.log; server_name socket.example.com; large_client_header_buffers 8 32k; location / { try_files $uri @nodejs; } # Important! Serve client socket.io file as normal static file, eg /js/libs/socket.io/socket.io.min.js location /socket.io/ { proxy_pass http://some_upsteram_com; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_redirect off; proxy_buffers 8 32k; proxy_buffer_size 64k; 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; proxy_set_header 'Access-Control-Allow-Origin' '*'; } location @nodejs { proxy_pass http://some_upsteram_com; } location ~ /\. { deny all; } } 

而在另一个网站,我使用下面的代码连接这个套接字应用程序。

 window.io = require("socket.io-client"); window.socket = io("http://socket.example.com"); 

但是当我运行这个网站,它有控制台错误,并且套接字连接不工作。

 GET http://socket.example.com/socket.io/?EIO=3&transport=polling&t=Lzt28XT 404 (Not Found) Failed to load http://socket.example.com/socket.io/?EIO=3&transport=polling&t=Lzt28XT: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://stagingbt.com' is therefore not allowed access. The response had HTTP status code 404. GET http://socket.example.com/socket.io/?EIO=3&transport=polling&t=Lzt28wV net::ERR_ABORTED 

请指导我如何解决这个问题。