Apache虛擬主機:基於IP和基於名稱的虛擬主機在RHEL/CentOS/Fedora中的配置


如果您在一臺伺服器上託管多個網站,則需要設定虛擬主機以保持每個網站的獨立性。虛擬主機可以基於IP或基於名稱。在本文中,我們將討論如何在RHEL/CentOS/Fedora中使用基於IP和基於名稱的虛擬主機來設定虛擬主機。

什麼是虛擬主機?

虛擬主機是在單個伺服器上託管多個網站的一種方法。對於企業而言,這是一種節省資源和成本的重要技術。當您在一臺伺服器上託管多個網站時,您需要確保每個網站都具有其獨特的標識,並且與其他網站隔離開。

虛擬主機有兩種型別:基於IP和基於名稱。基於IP的虛擬主機涉及為每個網站分配一個唯一的IP地址。基於名稱的虛擬主機使用HTTP/1.1 Host頭來識別網站。

在RHEL/CentOS/Fedora中設定基於IP的虛擬主機

要設定基於IP的虛擬主機,您需要為伺服器分配多個IP地址。請按照以下步驟配置基於IP的虛擬主機:

步驟1:編輯/etc/httpd/conf/httpd.conf檔案並新增以下幾行

NameVirtualHost *:80

Listen指令告訴Apache監聽埠80(預設HTTP埠)。NameVirtualHost指令告訴Apache使用基於名稱的虛擬主機。

步驟2:為要託管的每個網站新增以下幾行

<VirtualHost x.x.x.x:80>
   ServerName example.com
   ServerAlias www.example.com
   DocumentRoot /var/www/example.com/public_html/
</VirtualHost>

將x.x.x.x替換為您要用於此網站的IP地址。ServerName指令指定網站的域名。ServerAlias指令指定應與網站關聯的任何其他域名。DocumentRoot指令指定網站檔案的存放位置。

步驟3:儲存並關閉檔案,然後使用以下命令重啟Apache

systemctl restart httpd.service

在RHEL/CentOS/Fedora中設定基於名稱的虛擬主機

基於名稱的虛擬主機是在單個伺服器上託管多個網站的一種流行方法,因為它不需要多個IP地址。請按照以下步驟配置基於名稱的虛擬主機:

步驟1:編輯/etc/httpd/conf/httpd.conf檔案並新增以下幾行

Listen 80
NameVirtualHost *:80

Listen指令告訴Apache監聽埠80(預設HTTP埠)。NameVirtualHost指令告訴Apache使用基於名稱的虛擬主機。

步驟2:為要託管的每個網站新增以下幾行

<VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com
   DocumentRoot /var/www/example.com/public_html/
</VirtualHost>

ServerName指令指定網站的域名。ServerAlias指令指定應與網站關聯的任何其他域名。DocumentRoot指令指定網站檔案的存放位置。

步驟3:儲存並關閉檔案,然後使用以下命令重啟Apache

systemctl restart httpd.service

測試您的虛擬主機

要測試您的虛擬主機,您可以向本地hosts檔案新增臨時條目。請按照以下步驟操作:

步驟1:編輯您本地計算機上的/etc/hosts檔案並新增以下行:

x.x.x.x example.com

將x.x.x.x替換為伺服器的IP地址。

步驟2:開啟您的網路瀏覽器,並在位址列中輸入http://example.com

步驟3:如果您已正確配置虛擬主機,則應該看到example.com的網站。如果沒有,請檢查您的配置並重試。

在RHEL/CentOS/Fedora中管理虛擬主機

要管理RHEL/CentOS/Fedora中的虛擬主機,您可以使用Apache VirtualHost指令。VirtualHost指令允許您為每個虛擬主機指定設定。

以下是一些您可能希望包含在VirtualHost指令中的一些常用設定:

  • ServerName - 網站的域名。

  • ServerAlias - 應與網站關聯的其他域名。

  • DocumentRoot - 網站檔案的存放位置。

  • ErrorLog - 網站錯誤日誌檔案的存放位置。

  • CustomLog - 網站訪問日誌檔案的存放位置。

以下是包含這些設定的VirtualHost指令示例:

<VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com
   DocumentRoot /var/www/example.com/public_html/
   ErrorLog /var/log/httpd/example.com/error.log
   CustomLog /var/log/httpd/example.com/access.log combined
</VirtualHost>

您還可以使用Apache命令列工具來管理虛擬主機。以下是一些常用命令:

  • apachectl configtest - 測試Apache配置是否存在錯誤。

  • apachectl graceful - 優雅地重啟Apache,允許任何當前正在執行的請求在關閉之前完成。

  • apachectl restart - 立即重啟Apache,這可能會中斷當前正在執行的請求。

  • apachectl start - 如果Apache尚未執行,則啟動它。

  • apachectl stop - 如果Apache當前正在執行,則停止它。

以下是在RHEL/CentOS/Fedora中設定和管理虛擬主機的更多技巧和最佳實踐:

使用訪問控制

確保只有授權使用者才能訪問您的虛擬主機非常重要。使用Apache的訪問控制來限制對虛擬主機的訪問,方法是基於IP地址或使用者名稱和密碼。

使用目錄索引

如果您託管靜態檔案(如HTML、CSS和影像),建議啟用目錄索引,以便使用者可以瀏覽目錄中的檔案。使用Options指令啟用目錄索引:

<Directory /var/www/example.com/public_html/>
   Options +Indexes
</Directory>

使用重定向

如果您需要將使用者從一個虛擬主機重定向到另一個虛擬主機,或者從HTTP重定向到HTTPS,請使用Apache的Redirect指令。以下是如何將使用者從HTTP重定向到HTTPS的示例:

<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerName example.com
   # SSL/TLS configuration goes here
</VirtualHost>

使用日誌輪轉

Apache將每個虛擬主機的訪問和錯誤日誌寫入磁碟。隨著時間的推移,這些日誌可能會變得非常大,並消耗大量磁碟空間。使用日誌輪轉來保持日誌檔案的可管理性。以下是如何輪換example.com的訪問日誌的示例:

<VirtualHost *:80>
   ServerName example.com
   # ...
   CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/access.log.%Y%m%d 86400" combined
   # ...
</VirtualHost>

這將每天輪換example.com的訪問日誌,並保留30天的日誌。

使用快取外掛

如果您託管動態網站(如WordPress、Joomla或Drupal),建議使用快取外掛來提高效能。這些外掛可以快取經常訪問的頁面,並減少伺服器的負載。WordPress的流行快取外掛包括WP Super Cache和W3 Total Cache。

啟用壓縮

啟用壓縮可以顯著減少伺服器和客戶端之間傳送的資料量,從而提高效能。使用Apache的mod_deflate模組啟用壓縮:

<IfModule mod_deflate.c>
   AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
</IfModule>

使用虛擬主機進行測試

虛擬主機是在上線之前測試網站的好方法。為每個測試站點設定一個單獨的虛擬主機,並使用它來測試新功能、外掛和更新。

保持虛擬主機更新

與伺服器軟體一樣,保持虛擬主機更新最新的安全補丁和更新也很重要。確保定期更新網站的CMS、外掛和主題,以確保其安全性和無錯誤。

使用備份

定期備份虛擬主機非常重要,以確保您可以從資料丟失或伺服器故障中恢復。使用像Duplicity或rsync這樣的備份工具來建立虛擬主機的備份,並將它們儲存在外部驅動器或雲中。

使用內容分發網路 (CDN)

如果您託管大型檔案(如影像、影片或軟體下載),建議使用CDN來分發這些檔案。CDN可以透過快取位於世界各地的伺服器上的檔案來提高效能,從而減少伺服器的負載並提高使用者的下載速度。流行的CDN包括Cloudflare和Amazon CloudFront。

監控安全問題

虛擬主機可能會使您的伺服器更容易受到惡意軟體、駭客攻擊和DDoS攻擊等安全威脅。使用像fail2ban這樣的安全監控工具來監控您的伺服器是否有可疑活動,並阻止惡意IP地址。

結論

虛擬主機是在單個伺服器上託管多個網站的重要技術。在RHEL/CentOS/Fedora中,您可以使用基於IP或基於名稱的虛擬主機來設定虛擬主機。基於IP的虛擬主機需要多個IP地址,而基於名稱的虛擬主機使用HTTP/1.1 Host頭來識別網站。您可以使用Apache VirtualHost指令或Apache命令列工具來管理虛擬主機。

更新於:2023年5月2日

瀏覽量:398

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.