2013-12-21 15 views
11

nginxでnodejsを設定しようとしています。しかし、クライアントが接続しようとすると失敗する...WebSocket接続がnginx、nodejs、socket.ioで失敗しました

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通信を有効にするには?

私の現在のnginxの設定

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; 
    } 

答えて

20

まず、あなたのnginxのサーバーが1.3以上にアップグレードしてください。

秒、私のnginx conf works.you私の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"; 
    } 
} 
+1

ありがとうございました!あなたのヒントをアップグレードしてください! 私はnginxバージョン: '' 'nginx/1.4.4'''になっています。 –

+0

うまくいけば、1.1から1.6への更新がやりました。 –

関連する問題