2

nginx プロキシ パスに関連する場合と関連しない場合がある問題があります。

ポート 7022 の socket.io ですが、nginx はポート 80 ですべてのリクエストを管理します。flashsocket または html ファイルが動作しません。たぶんjasonpでもない。

nginxでsocket.ioプロキシの代替が利用可能になる数か月前にflashsocketを削除したため、nginxでのプロキシに関連している可能性があります。

私は、socket.io が単純に機能するというフォーラムをよく読みます。「サーバー上で何も変更することはありません」「あなたも必要ないはずです...socket.ioがすべてを行います...そのままにしておいてください..

私の交通機関はダウンしています

    io.set('transports', ['websocket','xhr-polling','jsonp-polling']);

以下が推奨されますが:

    io.set('transports', [
        'websocket'
        ,'flashsocket'
        ,'htmlfile'
        ,'xhr-polling'
        ,'jsonp-polling'
    ]);

これは私のnginxプロキシ構成です

    location /socket.io {
        proxy_pass http://localhost:7022;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

私のnginxサーバーは、127.0.0.1:9000でリッスンするFastCGIサーバーを使用して、いくつかの静的htmlとphpも提供しています

nginx の追加設定

server {
    listen 80;

    #server blah blah

    client_max_body_size 100M;
    client_body_buffer_size 5M;

    location / {
            try_files $uri $uri/ @rewrites;

    # This block will catch static file requests, such as images, css, js
    location ~* \.(?:ico|css|gif|jpe?g|png)$ {
            # Some basic cache-control for static files to be sent to the browser
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
            fastcgi_buffer_size 2M;
            fastcgi_intercept_errors off;
            fastcgi_buffers 4 2M;
            fastcgi_read_timeout 200;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_pass   127.0.0.1:9000;
    }

    # this prevents hidden files (beginning with a period) from being served
    location ~ /\. {
            deny all;
    }

    # opt-in to the future
    add_header "X-UA-Compatible" "IE=Edge,chrome=1";

何か明らかですか?? socket.io でトランスポートの問題を抱えている人は他にいますか? おそらくnginxルーティングと組み合わせて?

4

0 に答える 0