【问题标题】:What is the correct way to set up a virtual host running on Apache?设置在 Apache 上运行的虚拟主机的正确方法是什么?
【发布时间】:2018-09-18 14:42:17
【问题描述】:

我在 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.

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

好的,有名字吗?例如“myname.com”

为了清楚起见,我只需要这个进行本地测试

【问题讨论】:

    标签: apache2 virtualhost


    【解决方案1】:

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

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

    为了进行本地测试(服务器和浏览器都在同一个操作系统上),您需要做的就是为“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。然后,操作系统将根据主机文件将来自浏览器的请求正确路由到您的机器。然后,您的网络服务器将根据标头将您的请求排序到正确的虚拟主机。

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

    【讨论】:

      猜你喜欢
      • 2021-04-17
      • 2011-02-09
      • 2015-08-14
      • 1970-01-01
      • 2014-06-19
      • 2022-10-09
      • 2017-05-30
      • 2013-07-31
      • 2011-10-14
      相关资源
      最近更新 更多