1

我已经搜索了两天,但找不到这种行为的解释。

我已关注 AWS 文档。我已经使用推荐的 Amazon Linux AMI (aki-c48f51d9) 启动了 ec2 实例。然后根据我的需要定制我的 ec2 实例,包括 Apache 的配置:/etc/httpd/conf/httpd.conf 我的定制创建了两个虚拟主机,如下所示:

<VirtualHost *:80>
    ServerName www.domain1.com
    ServerAlias domain1.com
    ServerAdmin support@domain1.com
    DocumentRoot "/var/www/html/folder1"
</VirtualHost>

<VirtualHost *:80>
    ServerName subdomain.domain1.com
    ServerAdmin support@domain1.com
    DocumentRoot "/var/www/html/folder2"
</VirtualHost>

这已经过测试并按预期工作,将对 subdomain.domain1.com 的请求路由到 /var/www/html/folder2。

所以我继续从这个 ec2 实例创建一个自定义 AMI。成功创建 AMI 后,我使用此 AMI 启动了一个新的 ec2 实例。现在,令我惊讶的是,在这个新的 ec2 实例上,我的第二个虚拟主机的配置略微更改为:

<VirtualHost *:80>
     ServerName subdomain.domain1.com
     ServerAdmin support@domain1.com
     DocumentRoot "/var/www/html/folder1"
</VirtualHost>

请注意,DocumentRoot 以某种方式从原始的“folder2”更改为“folder1”,与默认虚拟主机(第一个)相同。发生了什么?我将不胜感激任何可以为我解决此问题的帮助。提前致谢!

4

1 回答 1

0

当我在主/etc/httpd/conf/httpd.conf文件中有我的虚拟主机条目时,我遇到了完全相同的问题。第二个 DocumentRoot 被覆盖以等同于第一个。

为了解决这个问题,我删除了虚拟主机代码(尽管我让 NameVirtualHost 处于活动状态)

<VirtualHost *:80>
    ServerName www.domain1.com
    ServerAlias domain1.com
    ServerAdmin support@domain1.com
    DocumentRoot "/var/www/html/folder1"
</VirtualHost>

<VirtualHost *:80>
    ServerName subdomain.domain1.com
    ServerAdmin support@domain1.com
    DocumentRoot "/var/www/html/folder2"
</VirtualHost>

并将其添加到位于/etc/httpd/conf.d/httpd-vhosts.conf的新文件中(注意这是在 conf.d 文件夹中,而不是在 conf 文件夹中)。

如果您的 httpd.conf 文件中的默认设置仍然自动添加 conf.d 文件夹中的所有文件:

# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

新的 httpd-vhosts.conf 文件也是如此。

我在 Elastic Beanstalk 环境中使用我的 EC2 实例,因此在我创建 AMI 并更改实例配置以使用该自定义 AMI ID 后,基于该 AMI 的 EC2 实例仍然具有正确的文档根。

于 2014-02-24T18:31:12.763 回答