使用 lighttpd 重定向端口 80 上的 Websocket 流量



我有一个托管在lighttpd上的网站,可以在"www"子域访问。我还有一个聊天服务器,侦听使用 node.js 和 socket.io 制作的端口 8124。

我希望所有客户端流量都发生在端口 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');

我从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 上。有可能吗?

已知

mod_proxy与websockets不兼容。

HAProxy是兼容的(我自己还没有测试过它,但这里有一篇关于它对websockets配置的文章)。

相关内容

  • 没有找到相关文章

最新更新