虚拟主机——处理它的最佳方法?

虚拟主机——处理它的最佳方法?

我精通 Apache、PHP 和虚拟主机的基础知识,但对虚拟主机有疑问。据我所知,HOSTS 文件可以仅有的位于以下位置之一:

C:/Windows/system32/drivers/etc(我相信在旧安装中会有所不同)

我认为它不能放在其他地方与 Apache 一起使用,仅用于虚拟主机和用于阻止站点的主 HOSTS 文件等。

我在 Uniform Server 的网站上听说过 PAC 文件(http://wiki.uniformserver.com/index.php/Virtual_Hosting:_PAC),但它们是特定于浏览器的,不是吗?

除了 HOSTS 文件之外,处理虚拟主机的最佳方法是什么?

我的服务器目前尚未向互联网开放,但如果开放的话,如果要面向前方(即向互联网开放),那么解析我的虚拟主机域的 DNS 的最佳方法是什么?

答案1

Apache 中的虚拟主机是与 etc/hosts 文件不同的概念。etc/hosts 文件只是本地 DNS 解析的一种方法。虚拟主机是一个配置选项,Apache 将根据请求的 URL 提供不同的页面。这需要一些 DNS 魔法,因为最终用户需要能够解析主机名。多个 IP 或端口是另外两个选项。

在 DNS 中,您只需添加指向同一 IP 的不同域的条目即可。例如,www.site1.com 和 www.site2.com 都指向 172.32.4.6

有关 VirtualHosts 如何工作的更多信息可以在这里找到:http://httpd.apache.org/docs/current/vhosts/

答案2

这里有一些混淆的术语。hosts 文件中的“hosts”指的是静态定义的名称到数字地址定义。因此,例如,您将在其中看到一行定义localhost127.0.0.1(也可能是::1,取决于 Windows 版本)。

另一方面,apache 中的 VirtualHosts 是指 Apache 中的一种配置方法,您可以根据传入请求的属性提供不同的网页;特别是连接接入的端口和Host附加到请求的标头。

通过这种方式,Apache 配置可以为多个不同的域提供一组单独的页面;例如,在www.domain.com被请求时和info.domain.com被请求时提供不同的页面组。 Apache 的文档是对 VirtuaHosts 的一个很好的概述。

希望这有助于澄清事实。

相关内容