Apache 默认站点返回虚拟主机目录

Apache 默认站点返回虚拟主机目录

我是服务器管理领域的新手,正在尝试从头开始学习。我在 Google Compute Engine 上运行 Apache2 服务器,并使用 Google Domains 配置我的域。

假设我有 example.io 并且我想制作 sub.example.io

现在,example.io 和 sub.example.io 都返回我为 sub.example.io 创建的目录中的内容。

我不确定错误是出在 sub.example.conf、example.conf 还是我的 DNS 设置上。

我只发现有人问完全相反的问题(sub.example.io 返回 example.io)。

例子.conf

<VirtualHost *:80>
ServerName example.io

DocumentRoot /var/www/html

<Directory /var/www/html>
    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride All
    Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

子示例.conf

NameVirtualHost *:80

<VirtualHost *:80>
ServerName sub.example.io

DocumentRoot /var/www/sub/public

<Directory /var/www/sub/public>
    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride All
    Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/sub-error.log

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/sub-access.log combined
</VirtualHost>

最后,我在 domains.google.com 上的 DNS 配置

Registered hosts:
Host name: sub.example.com
IPV4 Address: servers ip


Custom resource records:
Name: @ Type: A Data: servers ip
Name: sub Type: A Data: servers ip
Name: www Type: CNAME Data: example.io

答案1

当 Apache 无法根据 ServerName 和 ServerAlias 找到正确的 vhost 时,它会返回它能找到的第一个 vhost。这通常是 vhosts 文件夹中按字母顺序排列的第一个文件。

ServerName example.io如果您访问时使用 www. 前缀,则与 www.example.io 不匹配。

ServerAlias www.example.io还可以添加以匹配 www 子域。

相关内容