我是服务器管理领域的新手,正在尝试从头开始学习。我在 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 子域。