我们有几个在 Vagrant box 中运行的 Rails 应用程序(端口转发已经设置)。我们如何才能让子域就绪的开发域名适用于这些应用程序?
我们不喜欢 hosts 文件方法,因为:
- 它需要在 url (yuk) 中指定端口
- 它需要明确定义您希望使用的所有子域
我们有几个在 Vagrant box 中运行的 Rails 应用程序(端口转发已经设置)。我们如何才能让子域就绪的开发域名适用于这些应用程序?
我们不喜欢 hosts 文件方法,因为:
这听起来很适合Pow。Pow 一般用于直接运行应用程序,但也可以端口代理。此外,它会自动为您处理域(包括通配符子域)。
引用手册:
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.
您甚至可能希望将上述内容指向每个开发人员在其本地虚拟机设置中设置为仅主机网络的专用网络地址。您可以从您的 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。
(此处未实际测试代码。如果需要,请更正)。