这是虚拟主机configuration的以下部分,我需要进一步说明:
<VirtualHost *:80> # Admin email, Server Name (domain name), and any aliases ServerAdmin [email protected] ServerName 141.29.495.999 ServerAlias example.com ...
这是和示例configuration,类似于我目前有(我没有一个域名的时刻)。
<VirtualHost *:80>
– 允许在端口80上对所有可以联系到该服务器的IP进行HTTP请求的以下设置。 例如,如果可以在多个IP上访问服务器,则可以将此指令限制为一个而不是两个。
ServerName
– 如果HTTP请求的主机部分与此名称匹配,则允许请求。 通常这是一个映射到IP的域名,但在这种情况下,HTTP请求主机必须匹配这个IP。
ServerAlias
– 服务器接受的备用名称。
对于我来说,令人困惑的部分是,在上面的情况下,如果我设置ServerAlias mytestname.com
,然后向mytestname.com
发出HTTP请求,那么必须有一个指向服务器IP的DNSlogging才能工作? 在这种情况下,ServerAlias只是基本上EXTRA ServerName条目?
说我有一个DNS条目,这样foobar.com = 141.29.495.999
但后来我有ServerName = 141.29.495.999
和ServerAlias
是空的,这意味着,虽然foobar.com被parsing到正确的IP,因为没有参考在ServerName
或ServerAlias
接受foobar.com?
或者其他的东西。 男人我很困惑。
像这样想:
DNS是电话簿/黄页。 当有人想打电话给他们时,他们可以查看您的姓名,并获得您的电话号码并拨打该电话。 对于计算机,DNS也是一样 – 当有人想要访问www.example.com
他们会询问DNS的IP地址,然后他们可以联系具有该IP地址的计算机。 这就是解决的意思。 parsingIP地址与Apache毫不相干; 这完全是一个DNS问题。
ServerName
和ServerAlias
更像是公司的内部电话列表。 您的networking服务器是交换机; 它将接受到服务器的所有传入连接。 然后客户端/调用者会告诉他们他们正在寻找什么名字,并且会在Apacheconfiguration中查找如何处理这个名字。
如果该名称未在apacheconfiguration中列为ServerName / ServerAlias,则apache将始终为其列出第一个VirtualHost。 或者,如果不存在VirtualHost,则无论请求中给出的是什么主机名,它都会给出相同的内容。
http://www.example.com
。 www.example.com
交谈时使用的IP地址。 www.example.com
(这是HTTP中的Host:
头)交谈。 www.example.com
内容请求。 以下任何一种情况都可能发生:
www.example.com
被列为ServerAlias
的ServerName
或ServerAlias
– 如果是,那么它将使用VirtualHost的configuration来传递内容。 www.example.com
没有列出其中的任何一个 – 如果是的话,列表中的第一个虚拟主机将被用来传递内容。 如果你没有定义ServerName,那么apache2将尝试从/ etc / hosts中猜测它。 ServerAlias是可选的。 最常见的用例是在哪里
ServerName example.com ServerAlias www.example.com
这取决于你(而不是apache2的工作),以确保请求到达Web服务器的IP,例如,注册一个域和设置DNSlogging。 这样做(testing和开发)没有域和DNSlogging一个非常常见的方式是设置您的本地计算机/ etc / hosts文件,以便example.com指向您的服务器的IP。
192.168.0.12 example.com 192.168.0.12 www.example.com