设置在Apache上运行的虚拟主机的正确方法是什么?

时间:2018-09-18 14:42:17

标签: apache2 virtualhost

我在ubuntu 16.04上配置了Apache,并按照以下说明创建了虚拟主机:

<Directory /var/www/html/example.com/public_html>
        Require all granted
</Directory>
<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/example.com/public_html

        ErrorLog /var/www/html/example.com/logs/error.log
        CustomLog /var/www/html/example.com/logs/access.log combined

</VirtualHost>

当我尝试在浏览器中打开www.example.com页面时,看到以下消息:

This domain is established to be used for illustrative examples in documents. You may use this domain in examples without prior coordination or asking for permission.

我应该使用其他名称而不是“ example”来解决问题吗?

好吗?例如“ myname.com”

为清楚起见,我只需要在本地测试中使用

1 个答案:

答案 0 :(得分:0)

www.example.com是其他人拥有的实际网站,已经在DNS中注册并包含一些内容。当您在浏览器中打开地址时,计算机首先询问DNS服务器(可能是ISP进行的一种设置)。然后,DNS响应,说www.example.com是在93.184.216.34上运行的-这可能不是您的计算机。这是消息的来源。

现在,ServerName和ServerAlias是什么意思?实际上,这是您的计算机上运行的Web服务器的指令,以了解哪些数据包是给定虚拟主机的。它不会影响您的浏览器如何翻译它们。

为了进行本地测试(服务器和浏览器都在同一操作系统上),您需要做的只是为“ localhost”创建虚拟主机。这是当前正在使用的机器的保留地址。简单地说:

    ServerName localhost
    ServerAlias localhost

进入您的虚拟主机,您将可以通过在浏览器中输入“ localhost”来访问网络服务器。

如果您在本地需要多个主机,则可以通过编辑主机文件https://en.wikipedia.org/wiki/Hosts_(file)来覆盖dns-例如,在Windows中通过添加主机记录,例如:

    127.0.0.1 app.local
    127.0.0.1 db.local

,然后创建两个不同的虚拟主机,一个使用别名app.local,第二个使用db.local。然后,操作系统将根据主机文件将来自浏览器的请求正确地路由到计算机。然后,您的网络服务器将根据标题将您的请求排序到适当的virtualhost。

您可能想查看有关dns和互联网协议如何工作的一些常规信息: