我正在开发一个应用程序 (RoR + Heroku),它允许用户使用我的子域 (pagename.myapp.com) 或使用他们自己的域 (pagename.com) 创建自己的网站。
重要的一点是,此选项是我业务的关键:子域是免费计划,自定义域是付费计划。因此,我有一个表,用于存储每个用户的自定义域并检查此页面是否处于事件状态(存在并已支付配额)。
为此,我需要让用户能够将他们的域指向我的服务器。我们都知道 Heroku 不推荐使用 DNS A-Records .
此外,我想尽可能抽象地将此功能抽象为将来能够切换我的基础设施(Heroku 到 AWS),而不必要求我的所有用户更改他们的 DNS 区域。考虑到这一点,我认为最好的选择是运行类似于 EC2 代理(使用 AWS Elastic IP)的东西,它让我拥有这个 IP 的所有权。这个代理我认为应该重定向到 proxy.myapp.com,我会在应用程序级别解决请求。
由于我没有找到明确的信息,我不确定这个假设是否是最好的解决方案以及如何设置代理(使用哪种类型的代理?Nginx 也许?)。
说到这里,我想问一下解决这个“常见”功能的建议/最佳实践。
谢谢
最佳答案
你想要做的是相当直接的实现。您关于设置代理的假设是正确的。 Nginx 或 haproxy 都可以很好地解决这个问题(我个人会使用 haproxy)。以下是您将遇到的一些问题:
我的公司近一年来一直在做与此非常相似的事情。我们使用 haproxy 并简单地让它定期重新加载配置。我们的最终用户从未中断或中断过。 Nginx 也是一个非常好的产品。它内置了 DNS 缓存,因此如果您使用该路由,您需要确保正确配置它,以便 DNS 缓存 TTL 为 60 秒。
关于heroku - Multi-Tenancy Web 应用程序的自定义域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340820/