Перенаправление трафика websocket на порт 80 с помощью lighttpd

у меня есть веб-сайт, размещенный на lighttpd, доступный в поддомене "www". У меня также есть сервер чата, прослушивающий порт 8124, сделанный с узлом.js и сокет.Ио.

Я хочу, чтобы весь клиентский трафик происходил на порту 80, перенаправляя все запросы в поддомен "чат" на порт 8124. Поэтому я включил 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');

я получаю правильные сообщения от узел.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. Возможно ли это?

1 ответов


mod_proxy, как известно, не совместим с websockets.

HAProxy совместим (я не тестировал его сам, но вот статья о его конфигурации для websockets).