Перенаправление трафика 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).