微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

heroku – 多租户Web应用程序的自定义域

我正在开发一个应用程序(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应用程序开发人员了解它们正在运行的环境.

>用户连接到www.example.com(代理服务器)
>代理服务器连接到www.realdomain.com(网络应用程序)
>网络应用程序有一个购物车链接. www.realdomain.com/shoppingcart
>最终用户点击链接链接是www.realdomain.com/shoppingcart而不是www.example.com/shoppingcart

>充当代理服务器的主机的成本.这可能会很快失控.例如,您是否需要冗余,如果是这样,您打算如何实施冗余?你打算让ssl终止吗?如果是这样,您将不得不增加cpu数量以适应额外的负载.您想通过代理与heroku建立安全连接吗?如果这样做,您还需要增加cpu数量.您可能还必须添加其他ram,具体取决于并发连接数.
> Heroku还会定期更换负载平衡器.这很重要,因为您的代理服务需要每60秒重新加载一次/更新heroku实例的ip地址.根据我的经验,他们可能每天更换一次或两次,但他们使用的DNS条目有60秒的TTL.这意味着您应该确保您能够每60秒更新一次配置.

我公司近一年来一直在做与此类似的事情.我们使用haproxy并让它定期重新加载配置.我们从未对最终用户造成中断或中断. Nginx也是一款非常好的产品.它内置了DNS缓存,所以如果你走这条路线,你需要确保正确配置它,以便DNS缓存TTL是60秒.

原文地址:https://www.jb51.cc/html/225515.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐