我刚刚购买了Linode VPS 托管计划,并按照本指南进行设置。在“设置主机名”部分和“更新/etc/hosts”部分中,它说这里要设置的FQDN/主机名不需要与我要托管的网站相关,这让我很困惑。
我通过阅读大量文章进行了自己的研究,但仍然不太确定主机名/FQDN 在我的网络托管业务中扮演什么角色。以下是我设法找出的一些基本事实,如果有任何错误,请随时纠正我:
- FQDN 必须类似于 xxx.somedomain.com,如果是“xxx”。省略则它不是 FQDN。
- 根据https://kb.iu.edu/d/aiuv
xxx
,我认为可以松散地称为子域的 . 也可以称为“主机名” 。 在我的本地机器中,通过将以下行添加到
hosts
文件中63.117.14.58 www.yahoo.com 随便
对“www.yahoo.com”或“whatever”的每个网络请求都将被重定向到 IP 地址 63.117.14.58(这是 google.com 的 IP)。这是一种阻止本地计算机中不需要的站点的方法。
现在教程建议将此行添加到我服务器中的“主机”文件中
12.34.56.78(//my server's IP) myhostname.anything.com myhostname
它提到在上面的行中,域名可能是也可能不是我将要托管的域,但主机名应该是我在前面的步骤中已经设置的那个。我的问题是:
1) 基于 Facts#3,我认为这一行会将服务器上针对我的 IP 地址的任何请求重定向到myhostname.anything.com
或重定向myhostname
到我的 IP 地址,但这意味着什么?用户计算机的任何请求不应该myhostname.anything.com
已经转换为某个 IP 地址(无论是否是我的 IP 地址)?为什么我必须在我的服务器上重定向它?我对 HTTP 请求如何工作的理解是,当用户在浏览器中输入域名时,浏览器会联系域服务器,域服务器会根据域的 DNS 记录将其定向到 DNS 服务器,然后 DNS服务器将解析 IP 地址,然后浏览器从该 IP 地址获取数据。我理解的这个过程似乎与我服务器上的“主机”文件无关。
2) A.关于FQDN,为什么主机名必须与我在服务器上设置的主机名相同,而域名却不一样?
B.如果我在这里设置不同的主机名会发生什么?
C. 这里设置或不设置我的域名为 FQDN 的目的是什么?
D.如果我只设置 FQDN 而没有设置主机名会发生什么?像这样
12.34.56.78(//my server's IP) myhostname.anything.com
很多问题,但我相信其中一些问题的答案是重叠的,总的来说,我认为最大的问题是“设置主机名/编辑主机文件在我的虚拟主机业务中起什么作用?”
提前感谢您的时间。
人们很难回答这个问题,因为它从一个更简单的前提开始,然后从那里进入一个深深的兔子洞。让我们从头开始。
主机文件与 DNS
我认为这不需要太多解释,所以我会保持简短。hosts 文件的目的是定义不依赖 DNS 的主机到 IP 地址的映射。对于服务器而言,其中最重要的是设备自己的名称,因为如果您的 DNS 服务器出现问题以阻止您的设备通过名称引用自身,这是很愚蠢的。
只要我们只使用主机文件,我们根本不需要使用域。不涉及 DNS,所以谁在乎呢?不幸的是,随着我们网络的发展,让每台设备独立跟踪我们网络上所有设备的名称变得越来越不可持续。这导致我们使用 DNS,并引入了一些新的后勤障碍。
主机名与 FQDN
如果您愿意,主机名是设备名称或节点名称。这是一个对设备所有者有意义的唯一标识名称,但不一定有意义,甚至不会暴露给在设备上使用服务的人。这就是 Linode 的意思,当它说名称不需要与您托管的服务有任何关系时。
例如,假设您拥有一家名为 Contoso 的公司,并且您经营一个名为
example.com
. 该网站托管在六台机器上,dalek01
通过dalek06
. 外界需要知道的是,如果他们插入www.example.com
他们的网络浏览器,他们就可以获得他们想要的网站。过度好奇的时间领主不必关心他们的请求www.example.com
得到了服务的事实dalek03
。就其本身而言,主机名不一定与 DNS有任何关系。它只是设备的名称,甚至不一定有与之关联的域后缀。到目前为止,这很简单!
现在我们让事情变得更棘手。讲故事的时间!
www.example.com
,因为它由几台不同的机器托管。我们有一个唯一标识有问题的服务器的名称是一件好事!dalek01
到dalek06
某个 DNS 域中。幸运的是,我们拥有contoso.com
(以我们公司命名),完全独立于www.example.com
可能是我们的客户之一。corp.contoso.com
. 我们所有的台式机都配置了 DNS 搜索后缀corp.contoso.com
. 这意味着如果我们创建一个名为 的 DNS 条目dalek01.corp.contoso.com
,我们网络上的任何人都可以通过连接到dalek01
他们的 SSH 客户端来访问该机器。方便的!dalek01
知道它被调用dalek01
是因为我们把它放在了 hosts 文件中。我们希望它知道它也被称为dalek01.corp.contoso.com
,但我们不希望它依赖 DNS 来知道它自己的名称。那将是愚蠢的。因此,我们dalek01.corp.contoso.com
在 hosts 文件中定义了一个别名,dalek01
以便它知道其所有名称。www.example.com
,而忽略了您有六台名为dalek01
through的服务器dalek06
、您的公司名为 Contoso 的事实(除了您的客户),或者为了方便您为dalek01
through创建 DNS 记录的员工dalek06.corp.contoso.com
。把它们放在一起
希望这涵盖了所有基础。