WebSocketは、HTTPとはプロトコルが異なるため、nginxでリバースプロキシさせた場合に、xhr-pollingしか通さず、Websocketでエラーが発生してしまいます。
HTTP/1.1では、HTTP/1.1以外のプロトコルに切り替えるUpgradeヘッダがありますが、Nginxデフォルトの設定では、Upgradeヘッダが付与されていないため、Upgaradeヘッダに付与する必要があります。
※ Nginx1.1ぐらいまでは、UpgaradeヘッダがWebSocketのには対応していないようです。
server {
    listen       80;
    server_name  localhost;
    root         /usr/share/nginx/html;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    proxy_redirect    off;
    # for WebSocket
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    
    # その他の設定
        :
        :
}
おすすめ書籍