node.js - websockets - websocket via nginx



Umleiten des Websocket-Datenverkehrs auf Port 80 mit lighttpd (1)

Ich habe eine Website auf Lighttpd gehostet, auf der "www" Subdomain zugänglich. Ich habe auch einen Chat-Server, der Port 8124 mit node.js und socket.io hört.

Ich möchte, dass der gesamte Client-Verkehr auf Port 80 stattfindet, indem alle Anfragen an die "Chat" Subdomain an Port 8124 weitergeleitet werden. Also habe ich mod_proxy aktiviert und in lighttpd.conf habe ich hinzugefügt:

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

Auf dem Client, wenn ich mich mit dem Websocket verbinde,

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

Ich bekomme die richtigen Nachrichten von 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::

Aber der Browser gibt einen Fehler aus:

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

Natürlich funktioniert alles korrekt, wenn ich mich direkt an den Port 8124 verbinde:

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

Aber wie gesagt, ich möchte den gesamten Client-Verkehr auf Port 80 haben. Ist das möglich?






lighttpd