问题
我在这里不知所措,请指出我是否想将苹果与面包进行比较。
我想了解人们是如何做这种特定模式(或一组模式)的,这对我来说似乎很神奇。
注意:下面的具体问题(答案需要是对此的解决方案)
图案
1.银河流星托管
在DNS 配置中,他们要求我们将 CNAME 从 www.customer1.com(您)设置为galaxy-ingress.meteor.com
.
这让我大吃一惊,他们如何能够根据源域重定向多个站点。其中许多可能是高流量。这也应该是高性能的。
2. Github.com 页面
只需在他们的设置中添加您的域并将 CNAME 设置为他们给您的常量域。完毕。
注意:我对细节很模糊 - 转发到常量域或您的
GH pages user domain
类似user.github.io
,不要准确回忆。
3. Gitlab.com
他们给了你一个 IP 来指向A record
,不过,这对我来说似乎对正常运行时间不太友好。
PS:我爱这些家伙,Git + CI + docker repo 免费,我一定是在做梦。
4. Heroku
- 通过命令行或通过他们的 web gui 添加域。
- 将 CNAME 添加到您的 app-name.heroku
这(如上面的几个)将是最好的,xyz.herokuapp.com
即使没有自定义域,您也可以使用默认 URL。
5.浪涌.sh
- 将域添加到一个名为 CNAME 的文件(我很怀疑,最初,这会起作用,它太简单了:))
- 将 CNAME 添加到您的 xyz.surge.sh 网址
6. 模数.io
(我可以继续使用这个列表)
具体问题
我想根据上面的设置
- 当 www.website1.com 具有到 ingress.yourwebsite.com 的 CNAME 时,显示与其站点相关的内容
- 当 www.website2.com 具有到 ingress.yourwebsite.com 的 CNAME 时,显示与其站点相关的内容
- URL 应显示 www.website1.com 或 www.wesbite2.com 而不是 ingress.yourwebsite.com
- 以编程方式添加新站点很容易
- 保持高性能和正常运行时间友好
- 在 IaaS(数字海洋、AWS 等)提供商上实施。(尽管正如一个答案所暗示的那样,您可以使用 PaaS(Heroku、Modulus 等)提供者的 API,这不是作弊,因为这样做一无所知,因为 API 抽象了实现)
性能:我的意思是,如果可以在 DNS 层完成,您就不会在应用层执行此操作。
正常运行时间友好:我的意思是,如果服务器实例出现故障,该服务不会停止工作
奖金
如何使 website1.com 和 website2.com 工作(注意没有www.
)?
如www.website1.com
转发到website1.com
(或根据您的喜好以其他方式)
我想像谷歌应用程序一样在内部进行设置,我不希望用户在他们的 DNS 上进行花哨的设置,比如根目录下的 CNAME 等。
技术偏好
如果可能,请使用其中之一而不是其竞争对手。当您通过这样做做出次优选择时,请提及。
为了:
- 流星JS
- 节点JS
- Javascript
- Cloudflare.com API
- Nginx
- 任何高星级的 github.com 存储库(例如,1k+)
PS:我提到这个偏好不是一个dou*he,而是重用我已经知道的东西。
可能的解决方案(我不是在寻找):
- iframe(糟糕的 SEO 等)
- mod_rewrite(是 github 和其他人使用 mod_rewrite,似乎是应用程序级别和 kludgy)
更新 #1(2016 年 7 月 13 日)
我试过的
- 使用自定义域(例如 xyz.com)将meteorJS 应用程序部署到heroku,并尝试以编程方式路由a.xyz.com 等,出现此域中不存在herokuapp 之类的错误。
- 阅读了很多关于 hoerku 的通配符域但没有帮助的信息
- 使用自定义域(例如 xyz.com)将meteorJS 应用程序部署到meteor.com,并尝试以编程方式路由a.xyz.com 等,但出现错误,例如该域中不存在meteor 应用程序。
- 他们无法访问 DNS(我认为这需要工作的地方)
- meteor.com 免费托管已关闭
- 我猜这应该比我正在制作的缠结的毛线球更容易。
- 如果我可以以编程方式设置
CNAME
s (使用 cloudflare.com API,这可能在其他地方吗?)website1.yourwebsite.com
当有人点击时website1.yourwebsite.com
,我应该知道根据 URL(应用程序级别)提供哪些内容,然后我可以301 redirect
对实际主机做一个?URL 更改为301 redirect
。当!
- 刚刚偶然发现https://en.wikipedia.org/wiki/Virtual_hosting,正在阅读。
更新 #2(2016 年 7 月 30 日)
- 更新问题以澄清这需要在 IaaS(数字海洋、AWS 等)上实施。如果您使用的是 PaaS(Heroku、Modulus 等)提供者的 API,您仍然不知道这种模式是如何实现的,它已经被 API 抽象掉了。