WebSocket连接失败,nginx,nodejs和socket.io

我尝试用nginx设置nodejs。 但是,当客户端尝试连接失败…

WebSocket connection to 'ws://www.mydomain.com/socket.io/1/websocket/KUv5G...' failed: Error during WebSocket handshake: 'Connection' header value is not 'Upgrade': keep-alive socket.io.js:2371 

那么如何启用websocket通信呢?

我当前的nginxconfiguration

  upstream mynodejsapp { server 127.0.0.1:3000 max_fails=0 fail_timeout=10s weight=1; ip_hash; keepalive 512; } server { listen 80; listen [::]:80 default_server ipv6only=on; index index.html; server_name mydomain.com www.mydomain.com; keepalive_timeout 10; gzip on; gzip_http_version 1.1; gzip_vary on; gzip_comp_level 6; gzip_proxied any; gzip_buffers 16 8k; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; location / { proxy_pass http://mynodejsapp; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_cache_bypass $http_upgrade; proxy_http_version 1.1; proxy_redirect off; proxy_next_upstream error timeout http_500 http_502 http_503 http_504; proxy_connect_timeout 5s; proxy_read_timeout 20s; proxy_send_timeout 20s; proxy_buffers 8 32k; proxy_buffer_size 64k; } location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|media/|static/|robots.txt|humans.txt|favicon.ico) { root /var/www/mynodejsapp; access_log off; expires 1h; } fastcgi_param APPLICATION_ENV production; } 

    首先,将你的nginx服务器升级到1.3或更高版本。

    第二,我的nginx conf工作。你可以按照我的conf。

     server { listen 80; server_name jn.whattoc.com; 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_pass http://127.0.0.1:4050/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }