Nodejs:想要将域映射到服务器

我有一个web应用程序,允许人们在我的应用程序服务器上创build子站点(例如:mysite.com/their-site)。 我希望他们能够将他们的域名指向我的应用程序的子站点。 类似于您将域名附加到共享托pipe服务器的方式。

我不太清楚如何去做这件事。 如果有人能够启发我,我将不胜感激。

如果使用节点http-proxy或nginx ,则可以在不同的本地端口上运行每个单独的站点,然后再映射域名。 我使用http代理,但其他人喜欢nginx。

为此,您需要添加parsing到您的反向代理正在运行的IP地址的DNS条目。 然后,例如,端口80请求将被映射回localhost:3000。

这允许每个应用程序独立运行,并与其他站点分开运行。 他们不能互相碰撞。 在两个应用都声明相同path的情况下,您也没有命名空间问题。

我的http代理的app.js如下所示:

 var proxyPort = 80; var http = require('http'); var httpProxy = require('http-proxy'); var options = { router: { 'localhost': '127.0.0.1:3000', 'somesite.com': '127.0.0.1:3000', 'othersite.com': '127.0.0.1:4000' } }; console.log('Proxy Routing:') console.log(options);var options = { console.log(); var proxyServer = httpProxy.createServer(options); proxyServer.listen(proxyPort); console.log('Proxy listening on port ' + proxyPort); 

您也可以使用path进行路由。 看到这个: https : //github.com/nodejitsu/node-http-proxy/issues/232

所以更像你原来的要求,你可以这样做:

 router: { 'myhost.com/appA': '127.0.0.1:8080', 'myhost.com/appB': '127.0.0.1:9090/appB', 'myhost.com/appC': '127.0.0.1:9090/appC' } }; 

另一个select是简单地为每个客户提供一个路由/页面,然后它只是一个DNS问题。 您将设置DNS,以便所有域名parsing到您的应用运行的一个IP地址。 这有一些缺点:

  1. domain1.com/user1,domain1.com/user2,domain2.com/user1和domain2.com/user2都可以工作,你可能不想要。
  2. 你是控制所有的代码,还是提供代码? 如果是用户提供的代码,那么你需要一些隔离,所以单独的应用程序。
  3. 你仍然可能需要一个HTTP代理来运行在Linux的80端口,而不是作为sudo运行。