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ルーティングと組み合わせて?