gpt4 book ai didi

node.js - Node : want to map domains to server

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:27 26 4
gpt4 key购买 nike

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

我不太确定该怎么做。如果有人能启发我,我将不胜感激。

最佳答案

如果你使用类似 node http-proxy 的东西或 nginx您可以在不同的本地端口上运行每个单独的站点,然后将域名映射回来。我使用 http 代理,但其他人喜欢 nginx。

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

这允许每个应用程序独立运行,并在与其他站点不同的进程中运行。他们不能互相撞车。您也不会遇到两个应用程序声明相同路径的命名空间问题。

我的 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);
console.log();

var proxyServer = httpProxy.createServer(options);
proxyServer.listen(proxyPort);
console.log('Proxy listening on port ' + proxyPort);

您还可以使用路径进行路由。看到这个: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'
}
};

另一种选择是简单地为每个客户提供一个路由/页面,这只是一个 DNS 问题。您将设置 DNS,以便所有域名都解析为您的应用程序运行所在的一个 IP 地址。这有一些缺点:

  1. domain1.com/user1、domain1.com/user2、domain2.com/user1 和 domain2.com/user2 都可以,但您可能不想要。
  2. 您控制所有代码还是他们提供代码?如果它是用户提供的代码,那么您需要一些隔离,因此需要分离应用程序。
  3. 您仍然可能需要一个 http 代理才能在 linux 中的端口 80 上运行,而不是作为 sudo 运行。

关于node.js - Node : want to map domains to server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18070377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com