簡體   English   中英

在基於定制的Amazon Linux AMI啟動ec2之后,更改了第二虛擬主機的DocumentRoot

[英]Second Virtual Host's DocumentRoot is changed after launching ec2 based on customized Amazon Linux AMI

我已經搜尋了兩天,但找不到這種行為的解釋。

我已關注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”,與默認虛擬主機(第一個)相同。 發生了什么? 我將不勝感激能為我指出解決此問題的任何幫助。 提前致謝!

當我的虛擬主機條目位於主/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實例仍具有正確的文檔根目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM