0

很简单,我目前正在使用 Express 的 vhost 方法将请求路由到给定域名的适当脚本。我真的很喜欢这条路线,因为这意味着我不需要为每个虚拟主机脚本让单独的 node.js 实例监听单独的端口,而且我也不需要每个虚拟主机的进程。但是,使用这种方法对我来说有一个明显的缺陷。通过使用此方法,虚拟主机服务器中的任何内容都具有 root 权限,而不仅仅是脚本所在用户的权限。我需要知道找到某种沙盒方式或以其他方式运行虚拟主机服务器作为它所属的用户。不用说,我不能在服务器上拥有可以访问 root 的低权限用户。

TL;DR,有什么方法可以将请求路由到不同域名的关联应用程序,而无需指定应用程序需要知道的端口,并且仍然禁止该脚本的作者访问他们自己的用户帐户之外的权限?

4

1 回答 1

0

在我的应用程序中,我使用Bouncy

var bouncy = require( "bouncy" );

var server = bouncy(function( req, res, bounce ) {
    var port;
    var subdomain = req.headers.host.split( "." )[ 0 ];

    switch ( subdomain ) {
        case "xyz":
            port = 4002;
            break;

        default:
            port = 4001;
            break;
    }

    bounce( port );
});

server.listen( 4000 );

这样,您可能会有各种应用程序在不同的端口和不同的进程上进行监听。它们都将被代理在端口 4000 下工作,所以:

xyz.localhost:4002 = xyz.localhost:4000
localhost:4001 = localhost:4000

我希望它有帮助;)

于 2013-08-21T04:35:18.250 回答