nginx の背後で実行されている node.js を使用して socket.io をセットアップしました。メイン ドメインは nginx で実行され、サブドメインは node.js にプロキシされています。すべての REST API は正常に動作していますが、ソケット接続に関しては、ログにハンドシェイクが表示されますが、クライアントは明らかに応答を取得できません。以下は node.js からのログで、さらに以下は私が使用している構成です。それが機能しない理由はありますか?
info - handshake authorized 7WtMDKRY1tPb97CORlJ4
debug - setting request GET /socket.io/1/websocket/7WtMDKRY1tPb97CORlJ4
debug - set heartbeat interval for client 7WtMDKRY1tPb97CORlJ4
debug - client authorized for
debug - websocket writing 1::
debug - clearing poll timeout
debug - jsonppolling writing io.j[0]("8::");
debug - set close timeout for client JoDWOVTvLg7SdYpNRlJ2
debug - jsonppolling closed due to exceeded duration
debug - setting request GET /socket.io/1/xhr-polling/7WtMDKRY1tPb97CORlJ4?t=1368925686996
debug - setting poll timeout
debug - discarding transport
debug - cleared heartbeat interval for client 7WtMDKRY1tPb97CORlJ4
debug - setting request GET /socket.io/1/jsonp-polling/7WtMDKRY1tPb97CORlJ4?t=1368925696997&i=0
debug - setting poll timeout
debug - discarding transport
debug - clearing poll timeout
debug - clearing poll timeout
debug - jsonppolling writing io.j[0]("8::");
debug - set close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - jsonppolling closed due to exceeded duration
debug - setting request GET /socket.io/1/jsonp-polling/7WtMDKRY1tPb97CORlJ4?t=1368925717060&i=0
debug - setting poll timeout
debug - discarding transport
debug - cleared close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - clearing poll timeout
debug - jsonppolling writing io.j[0]("8::");
debug - set close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - jsonppolling closed due to exceeded duration
debug - setting request GET /socket.io/1/jsonp-polling/7WtMDKRY1tPb97CORlJ4?t=1368925737199&i=0
debug - setting poll timeout
debug - discarding transport
debug - cleared close timeout for client 7WtMDKRY1tPb97CORlJ4
debug - fired close timeout for client JoDWOVTvLg7SdYpNRlJ2
info - transport end (close timeout)
Nginx の設定:
upstream app_yourdomain {
server 127.0.0.1:3000;
}
# the nginx server instance
server {
listen 80;
server_name mydomain.com;
# pass the request to the node.js server with the correct headers and much more can be added, see nginx config options
location / {
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
tcp_nodelay on;
proxy_pass http://app_yourdomain/;
proxy_redirect off;
}
}
Socket.io は 127.0.0.1:3000 で実行されています。