DNS 和 Nginx 可以有多个子域名级别吗?

DNS 和 Nginx 可以有多个子域名级别吗?

这似乎是一个简单的问题,但经过一些谷歌搜索后我似乎找不到答案。

我有一个临时服务器,我想尽可能地模仿生产服务器。假设我拥有一个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 不够熟悉,无法提供多个虚拟主机示例。

相关内容