DNS 和 Nginx 是否可以有多个子域级别?

Ste*_*ins 5 domain-name-system nginx subdomain

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

我有一个临时服务器,我想尽可能地模拟生产服务器。假设我拥有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 用于我的网络后端,并使用 Gandi 作为托管服务提供商,在其中管理我的 DNS 区域文件。

是否可以使用多级子域配置我的域名?或者,我是否坚持使用命名约定,例如blog-stage.example.com?或者,也许有更好的方法来管理我不知道的问题?

如果可能,DNS 区域文件会是什么样子?

最后,如果可能的话,Nginx 配置文件会是什么样的?

Ste*_*ins 2

正确答案来自@sysadmin1138和@cjc:

Nginx 配置

您的 nginx 虚拟主机将如下所示:

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;

[...]

}
Run Code Online (Sandbox Code Playgroud)

这假设您可以为您的 Web 服务器分配两个 IP 地址。通过上述配置,一台虚拟服务器将绑定到 1.1.1.1:80 并响应 blog.stage.example.com,另一台服务器将绑定到 2.2.2.2:80 并响应 blog.example.com。设置 DNS 将取决于您的 DNS 管理方式,但它应该是可行的。

域名系统

子域名和托管有点未定义,您最好询问他们是否支持类似的内容。很可能定义一个包含多个标签的 A 记录。例如,您可以将其放入 example.com 的 DNS 区域中:

blog.stage             1.1.1.2
      blog             1.1.1.1
Run Code Online (Sandbox Code Playgroud)

它可能会起作用。绑定 DNS 确实支持此类事情,但您的托管提供商是否允许您这样做完全是另一回事。

更好的计划是使用博客以外的东西。

betablog              1.1.1.2
    blog              1.1.1.1
Run Code Online (Sandbox Code Playgroud)

因为这更有可能得到您的提供商的支持。

我对 Nginx 不太熟悉,无法为此提供多个虚拟主机示例。