很简单,我目前正在使用Express的vhost方法将请求路由到给定域名的相应脚本。我真的很喜欢这条路由,因为这意味着我不需要为每个虚拟主机脚本分别监听单独的node.js实例,我也不需要每个虚拟主机都有一个进程。但是,使用这种方法有一个明显的缺陷。通过使用此方法,vhost服务器中的任何内容都具有root权限,而不仅仅是其脚本所属用户的权限。我需要知道找到某种方式的沙盒或以其他方式运行vhost服务器作为它所属的用户。毋庸置疑,我无法在服务器上拥有对权限较低的特权用户。
TL; DR,我可以通过哪种方法将请求路由到不同域名的关联应用程序,而无需指定应用程序需要知道的端口,并且仍然禁止该脚本的作者超出自己的访问权限用户帐户?
答案 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
我希望它有所帮助;)