这似乎是一个简单的问题,但经过一些谷歌搜索后我似乎找不到答案。
我有一个临时服务器,我想尽可能地模仿生产服务器。假设我拥有一个example.com
,我决定使用 托管一个博客blog.example.com
。我希望能够在使用临时地址 将其推送到生产之前暂存博客blog.stage.example.com
。我宁愿这样做,也不愿购买另一个域名,例如stage-example.com
或使用 之类的命名约定blog-stage.example.com
。
显然,我希望blog.stage.example.com
指向在暂存环境中运行的服务器(例如 IP 1.1.1.1),并blog.example.com
指向在生产环境中运行的服务器(例如 IP 2.2.2.2)。
我使用 Nginx 作为我的 Web 后端,并使用 Gandi 作为托管服务提供商,在那里我管理我的 DNS 区域文件。
我可以为我的域名配置多级子域名吗?或者,我是否只能遵循这样的命名约定blog-stage.example.com
?或者,也许有我不知道的更好的方法来管理这个问题?
如果可能的话,DNS 区域文件会是什么样子的?
最后,如果可能的话,Nginx 配置文件是什么样的?
答案1
你的 nginx virt 主机将看起来像这样:
server {
listen 1.1.1.1:80;
server_name blog.stage.example.com;
[...]
}
server {
listen 2.2.2.2:80;
server_name blog.example.com;
[...]
}
这假设您可以为您的 Web 服务器分配两个 IP 地址。使用上述配置,一个虚拟服务器将绑定到 1.1.1.1:80 并响应 blog.stage.example.com,而另一个服务器将绑定到 2.2.2.2:80 并响应 blog.example.com。设置 DNS 将取决于您的 DNS 管理方式,但这应该是可行的。
答案2
子域名和托管有点不确定,最好询问他们是否支持类似的东西。完全可以定义一个包含多个标签的 A 记录。例如,您可以将它放在 example.com 的 DNS 区域中:
blog.stage 1.1.1.2
blog 1.1.1.1
而且它可能会起作用。Bind DNS 确实支持这种功能,但您的托管服务提供商是否允许您这样做则完全是另一回事。
更好的计划是使用博客以外的其他东西。
betablog 1.1.1.2
blog 1.1.1.1
因为这更有可能得到您的提供商的支持。
我对 Nginx 不够熟悉,无法提供多个虚拟主机示例。
答案3
正确答案来自@sysadmin1138 和@cjc:
Nginx 配置
你的 nginx virt 主机将看起来像这样:
server {
listen 1.1.1.1:80;
server_name blog.stage.example.com;
[...]
}
server {
listen 2.2.2.2:80;
server_name blog.example.com;
[...]
}
这假设您可以为您的 Web 服务器分配两个 IP 地址。使用上述配置,一个虚拟服务器将绑定到 1.1.1.1:80 并响应 blog.stage.example.com,而另一个服务器将绑定到 2.2.2.2:80 并响应 blog.example.com。设置 DNS 将取决于您的 DNS 管理方式,但这应该是可行的。
DNS
子域名和托管有点不确定,最好询问他们是否支持类似的东西。完全可以定义一个包含多个标签的 A 记录。例如,您可以将它放在 example.com 的 DNS 区域中:
blog.stage 1.1.1.2
blog 1.1.1.1
而且它可能会起作用。Bind DNS 确实支持这种功能,但您的托管服务提供商是否允许您这样做则完全是另一回事。
更好的计划是使用博客以外的其他东西。
betablog 1.1.1.2
blog 1.1.1.1
因为这更有可能得到您的提供商的支持。
我对 Nginx 不够熟悉,无法提供多个虚拟主机示例。