Apache ProxyPass 和 Node.js - 未提供 socket.io

Apache ProxyPass and Node.js - not serving up socket.io

我正在尝试 运行 Node.js 与我现有的 apache 一起使用,但在从我的 Express.js 服务器提供内容时遇到 ProxyPass 问题。问题似乎是Node服务器在Apache转发时看到的请求。

我试过这个配置:

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ProxyPreserveHost on
    ProxyPass /node http://localhost:3000/
    ProxyPassReverse /node http://localhost:3000/
</VirtualHost>

节点是这样设置服务器的:

var express = require('express')
, app = express()
, server = require('http').createServer(app)
, io = require("socket.io").listen(server) 

app.use(function(req, res, next){
    console.log(req.method, req.url); // log the method and route
    next();
});
app.use(express.static(__dirname + '/public'));
app.use('/components', express.static(__dirname + '/components'));
app.use('/js', express.static(__dirname + '/js'));

我通过节点记录了这个:

GET /
GET //components/bootstrap/dist/css/bootstrap.css
GET //components/font-awesome/css/font-awesome.css
GET //css/flags.css
GET //css/app.css
GET //components/jquery/dist/jquery.js
GET //components/bootstrap/dist/js/bootstrap.js
GET //socket.io/socket.io.js
GET //js/client.js
GET //components/bootstrap/dist/css/bootstrap.css.map

问题:当 apache 发送请求并且 socket.io 库未提供服务时,我收到一条额外的斜线。如何让 Apache 在到达 node.js 之前删除前导斜线?

我最终使用 HAProxy 坐在 node 和 apache 前面;正如上面评论中所建议的那样。

这些是我使用的设置:

 frontend main
    bind *:80
    mode http
    default_backend apache

    acl is_node path_beg -i /node/
    use_backend node if is_node

    acl is_node_too path_beg -i /node
    use_backend node if is_node_too

    acl is_socket path_beg -i /socket.io/
    use_backend socketio if is_socket

    acl is_socketio_too path_beg -i /socket.io
    use_backend socketio if is_socketio_too

backend apache
    mode http
    balance     roundrobin
    server      apache localhost:81

backend node
    mode http
    balance     roundrobin
    server      node localhost:3000
    reqrep ^([^\ :]*)\ /node/(.*)     \ /
    reqrep ^([^\ :]*)\ /node(.*)     \ /

backend socketio
    mode http
    balance     roundrobin
    server      node localhost:3000
    reqrep ^([^\ :]*)\ /node/(.*)     \ /
    reqrep ^([^\ :]*)\ /node(.*)     \ /