在 Rails/Apache 中自动托管用户域

Posted

技术标签:

【中文标题】在 Rails/Apache 中自动托管用户域【英文标题】:Automatically Host User Domains in Rails/Apache 【发布时间】:2011-02-28 08:18:45 【问题描述】:

我目前正在开发一个面向用户的 Web 应用程序,该应用程序在网站上为每个新用户提供自己的子域,这很好(使用 subdomain_fu),但是有没有办法让用户将自己的域映射到这个子域?

我知道如何通过 SSH 进入服务器并手动编辑 Apache Vhosts 文件来手动执行此操作,但是有没有办法自动执行此操作,以便用户只需将其域输入到站点上的框中(显然他们必须在其他地方更改自己的 DNS)?

我在 Apache 上使用 Ruby 1.8 和 Rails 2.3.3。

基本上是让;

http://user.application.com/article-1

访问
http://userdomain.com/article-1

感谢您的帮助!

【问题讨论】:

我也想知道这是怎么回事,哈哈 【参考方案1】:

我假设这只是您希望用户将不同域名映射到的一个应用程序,对吧?您根本不需要使用虚拟主机,因为所有请求都将发送到同一个 Rails 应用程序,而不管域名如何。如果您使用虚拟主机,则默认虚拟主机(如果 user.application.com 解析为 1.2.3.4 则处理 http://1.2.3.4 的虚拟主机)需要是您的 Rails 应用程序。

【讨论】:

是的一个应用程序,用户可以将自己的域分配给自己的子域。我们正在使用虚拟主机,那么我们将如何设置它呢?将域指向应用程序的 IP 地址会简单地弹出“It Works!”谢谢。 默认虚拟主机应该是第一个被加载的。我不知道您是如何配置 Apache 的,但请尝试弄清楚“它在哪里工作!”页面是,这就是它用作默认的页面【参考方案2】:

您的用户应该能够为其域设置指向您的域的 CNAME 记录,例如

userdomain.com.  CNAME  user.application.com.

然后让您的应用知道他们想使用userdomain.com 作为其主机名。我认为您不必更改您的虚拟主机设置,因为您的服务器会看到对 user.application.com 的请求,但可以通过设置您自己的 CNAME 来测试这一点。

在您的应用程序中,您需要查看主机名,如果它包含application.com,您可以像现在一样执行此操作,但如果没有,您需要检查是否有用户将该域设置为他们的.

【讨论】:

与其在这里说和 Theo 一样的话,使用 CNAME。像 Shopify.com 这样的地方使用这种策略/技术取得了巨大的成功。不过,我还没有看到一个分步指导教程。 我不能让它工作,我可以让域指向服务器本身,但它只显示“它工作!”屏幕。我假设它与最后一步有关,因为我不确定该怎么做。谢谢。

以上是关于在 Rails/Apache 中自动托管用户域的主要内容,如果未能解决你的问题,请参考以下文章

学习总结-Active Directory 域服务管理03-托管账户

如何使用php获取域的托管IP和国家名称

Weblogic学习总结——创建配置和启动托管服务器

自动装配失败:不是托管类型

在 Hetzner 托管的附加域上安装 WordPress

通过多域托管防止直接访问主域上的网站