8

「www」サブドメインからアクセスできるlighttpdでホストされているWebサイトがあります。node.jsとsocket.ioで作成されたポート8124でリッスンしているチャットサーバーもあります。

「チャット」サブドメインへのすべてのリクエストをポート8124にリダイレクトすることにより、すべてのクライアントトラフィックをポート80で発生させたいので、mod_proxyを有効にして、lighttpd.confに次のように追加しました。

$HTTP["host"] == "chat.myserver.com" {
    proxy.server = (
            "" => ((
                    "host" => "78.128.79.192",
                    "port" => "8124"
            ))
    )
}

クライアントで、WebSocketに接続すると、

var socket = io.connect('http://chat.myserver.com');

node.jsから正しいメッセージを受け取ります:

debug - client authorized
info  - handshake authorized 6067470561567883577
debug - setting request GET /socket.io/1/websocket/6067470561567883577
debug - set heartbeat interval for client 6067470561567883577
debug - client authorized for 
debug - websocket writing 1::

しかし、ブラウザはエラーを出します:

Firefox can't connect to server ws://chat.myserver.com/socket.io/1/websocket/6067470561567883577

もちろん、ポート8124に直接接続すると、すべてが正しく機能します。

var socket = io.connect('http://www.myserver.com:8124');

しかし、私が言ったように、私はすべてのクライアントトラフィックがポート80にあることを望みます。それは可能ですか?

4

1 に答える 1

8

mod_proxyはwebsocketと互換性がないことが知られています。

HAProxyは互換性があります(私は自分でテストしていませんが、WebSocketの構成に関する記事があります)。

于 2012-06-08T11:03:19.937 に答える