Node.js vhost作为用户

时间:2013-08-21 00:49:45

标签: node.js express virtualhost reverse-proxy

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

TL; DR,我可以通过哪种方法将请求路由到不同域名的关联应用程序,而无需指定应用程序需要知道的端口,并且仍然禁止该脚本的作者超出自己的访问权限用户帐户?

1 个答案:

答案 0 :(得分: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

我希望它有所帮助;)