【发布时间】:2013-06-05 08:32:19
【问题描述】:
我们有几个在 Vagrant 盒子中运行的 Rails 应用程序(端口转发已经设置)。我们如何才能获得适用于这些应用程序的子域就绪开发域名?
我们不喜欢主机文件方法,因为:
- 它需要在 url (yuk) 中指定端口
- 它需要明确定义您希望使用的所有子域
【问题讨论】:
标签: ruby-on-rails dns vagrant
我们有几个在 Vagrant 盒子中运行的 Rails 应用程序(端口转发已经设置)。我们如何才能获得适用于这些应用程序的子域就绪开发域名?
我们不喜欢主机文件方法,因为:
【问题讨论】:
标签: ruby-on-rails dns vagrant
这听起来很适合Pow。 Pow 一般用于直接运行应用程序,但也可以端口代理。此外,它会自动为您处理域(包括通配符子域)。
引用manual:
2.1.4 端口代理
Pow 的端口代理功能可让您将特定主机名上的所有 Web 流量路由到计算机上的另一个端口。要使用它,只需在 ~/.pow 中创建一个文件(而不是符号链接),并将目标端口号作为其内容。
例如,将 http://proxiedapp.dev/ 的所有流量转发到端口 8080:
$ echo 8080 > ~/.pow/proxiedapp您还可以使用端口代理来访问为其他运行时(例如 Python 或 Node.js)编写的 Web 应用程序。请记住,代理背后的服务不会像 Rack 应用程序那样自动启动或停止。
【讨论】:
如果您的所有内容都在一个父域下,您可以使用 DNS 通配符做您想做的事情。
*.vagrant.mydomain.com. CNAME vagrant.mydomain.com.
您甚至可能希望将上述内容指向一个私有网络地址,您的每个开发人员都已在其本地 virtualbox 设置中设置为仅主机网络。您可以从 Vagrantfile 设置网络和主机 ip,因此每个人都可以在同一个位置运行他们的开发环境而无需特别努力,因此可以在开发框外提供的相同 DNS 条目适用于每个人。
如果您正在运行 Bind9 DNS 服务器,那么您可以指定如下内容,以便在每个开发人员的系统上满足本地 192.168.192.0/24 网络上的一堆 vagrant box:
$ORIGIN vagrant.mydomain.com.
$GENERATE 10-99 *.$ A 192.168.192.$
因此,对于任何 foo,例如 foo.27.vagrant.mydomain.com 将指向 192.168.192.27。
(此处未实际测试代码。如果需要,请纠正)。
【讨论】: