Mar*_* B. 8 dns proxy heroku amazon-ec2 multi-tenant
我正在开发一个应用程序(RoR + Heroku),允许用户使用我的子域(pagename.myapp.com)或使用他们自己的域(pagename.com)创建自己的网站.重要的一点是,此选项是我的业务的关键:子域是免费计划,自定义域是付费域.所以我有一个表格,用于存储每个用户的自定义域名,并检查此页面是否处于活动状态(存在且已支付配额).
为此,我需要为用户提供将其域指向我的服务器的功能.我们都知道Heroku不建议使用DNS A-Records.
此外,我想尽可能抽象这个功能,以便将来能够切换我的基础设施(Heroku到AWS),而不必要求我的所有用户更改他们的DNS区域.考虑到这一点,我认为最好的选择是运行类似于EC2代理(使用AWS弹性IP),这使我拥有此IP的所有权.我认为这个代理应该重定向到proxy.myapp.com,我会在应用程序级别解析请求.
由于我没有找到关于这一点的明确信息,我不确定这个小说是否是最好的解决方案以及如何设置代理(使用哪种代理?Nginx可能吗?).
说,我想问一下建议/最佳实践来解决这个"常见"特征.
谢谢
你想要做的是相当直接的实施。您关于设置代理的假设是正确的。Nginx 或 haproxy 都可以很好地解决这个问题(我个人会使用 haproxy)。以下是您将遇到的一些问题:
更改代理服务器上的主机标头可能会导致最终 Web 应用程序生成不正确的链接。您可以使用相对路径来解决此问题,但这需要 Web 应用程序开发人员了解他们正在运行的环境。
主机充当代理服务器的成本。这可能会很快失控。例如,您是否需要冗余,如果是,您打算如何实施?你打算终止 ssl 吗?如果是这样,您将不得不增加 CPU 数量以适应额外的负载。您想通过代理与 heroku 建立安全连接吗?如果这样做,那么您还需要为此增加 CPU 数量。根据并发连接的数量,您可能还需要添加额外的内存。
Heroku 还会定期更改他们的负载均衡器。这很重要,因为您的代理服务需要每 60 秒重新加载配置/更新 heroku 实例的 IP 地址。根据我的经验,他们每天可能会更改一两次,但他们使用的 DNS 条目有 60 秒的 TTL。这意味着您应该确保您能够每 60 秒更新一次配置。
我的公司近一年来一直在做与此非常相似的事情。我们使用 haproxy 并简单地让它定期重新加载配置。我们的最终用户从未中断或中断过。Nginx 也是一个非常好的产品。它内置了 DNS 缓存,因此如果您使用该路由,您需要确保正确配置它,以便 DNS 缓存 TTL 为 60 秒。
归档时间: |
|
查看次数: |
2355 次 |
最近记录: |