我有一個在 AWS EC2 執行個體上執行的 Apache 伺服器。目前,一個虛擬主機正在伺服器上成功運行,我想添加第二個虛擬主機/網域,但我不知道如何讓它工作。
對資料進行匿名處理後,這是我為httpd.conf
使第一個虛擬主機運作而添加的原始資訊:
<Directory "/var/www/site-1/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "/var/www/site-1/public"
ServerName "site-1.com"
ServerAlias "*.site-1.com"
RewriteEngine on
RewriteCond %{SERVER_NAME} =site-1.com [OR]
RewriteCond %{SERVER_NAME} =*.site-1.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
然後,我在 Google Domains 中註冊了以下內容site-1
(使用虛假 IP 位址):
Host name Type TTL Data
site-1.com A 1 hour 4.184.56.145
*.site-1.com A 1 hour 4.184.56.145
然後,我使用 Certbot 新增 SSL 證書,這會在httpd.conf
Google Domains DNS 設定中新增以下行和 ACME 質詢:
Include /etc/httpd/conf/httpd-le-ssl.conf
這一切工作正常。然後,我購買了第二個網域 ( site-2.com
),現在,我只是嘗試讓虛擬主機index.html
在網站目錄的根目錄中運行一個非常簡單的檔案(即/var/www/site-2
)。
為此,我在最底部添加了以下內容httpd.conf
:
<Directory "/var/www/site-2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "/var/www/site-2"
ServerName "site-2.com"
</VirtualHost>
以下 DNS 設定已新增至 Google Domains 中site-2
:
Host name Type TTL Data
site-2.com A 1 hour 4.184.56.145
自從添加所有這些設定以來已經有幾個小時了site-2
,我用 重新啟動了 Apache 伺服器幾次sudo systemctl restart httpd
。但是,當我轉到 時site-2.com
,我得到以下頁面,這不是index.html
我放置在下面的範例文件/var/www/site-2
:
還值得注意的是, 的圖標site-2
實際上是 的圖標site-1
。不知道為什麼。此外,目錄/檔案權限/所有權site-2
與 相同site-1
。
任何人都可以提供任何想法來解釋為什麼這不起作用嗎?對於它的價值,在做了相當多的研究之後,我認為我必須將以下行添加到httpd.conf
,但這樣做並重新啟動伺服器並沒有什麼區別:
NameVirtualHost *:80
編輯: 我剛剛想到了一些事情。無論出於何種原因,site-2
都指向var/www/html
目錄。如果我將範例index.html
檔案放入該目錄中,那麼當我造訪 site-2.com 時它會正確載入。這是為什麼?為什麼以下虛擬主機區塊不起作用?
<VirtualHost *:80>
DocumentRoot "/var/www/site-2"
ServerName "site-2.com"
</VirtualHost>
答案1
老實說,我不知道這筆交易是什麼,但它才剛開始運作。也許這是一個 DNS 傳播問題(不確定),但我在原始問題中列出的配置開始工作。