Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Apache 虛擬主機配置全攻略:多域名、子域名、IP 基礎與名稱基礎綁定詳解

編輯:關於伺服器

Apache HTTP Server 是全球最廣泛使用的 Web 伺服器軟體,其強大的虛擬主機機制讓單一伺服器可輕鬆承載數百個網站。本文系統整理 Apache 2.2/2.4 虛擬主機配置核心知識,涵蓋 IP 基礎、名稱基礎、多域名綁定、子域名泛解析、SSL 多憑證 (SNI) 等實戰場景,並提供可直接套用的配置範本。

核心概念:兩種虛擬主機模式

模式原理適用場景缺點
IP 基礎每個網站綁定獨立 IP需支援極舊瀏覽器(無 Host 標頭)、SSL 非 SNI 環境IP 成本高、擴展性差
名稱基礎透過 HTTP Host 標頭區分網站現代 Web 部署標準、單 IP 承載無限網站需客戶端支援 Host 標頭(所有現代瀏覽器皆支援)

現代部署一律採用名稱基礎虛擬主機,配合 SNI 解決多 SSL 憑證問題。

基礎配置檔架構 (httpd.conf / apache2.conf)

# 1. 監聽埠
Listen 80
Listen 443

# 2. 啟用名稱基礎虛擬主機 (Apache 2.4 預設已啟用)
NameVirtualHost *:80
NameVirtualHost *:443

# 3. 伺服器名稱 (建議設為主機名或主域名)
ServerName www.example.com:80

# 4. 包含獨立站點配置目錄 (推薦模組化管理)
IncludeOptional sites-enabled/*.conf

標準站點配置範本 (sites-available/example.com.conf)

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    
    # 日誌分離
    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
    
    # 目錄權限
    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    
    # 安全標頭
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
</VirtualHost>

# HTTPS 虛擬主機 (需 mod_ssl、SNI)
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/example.com.key
    SSLCertificateChainFile /etc/ssl/certs/example.com.ca-bundle
    
    # SSL 現代化配置
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5:!3DES
    SSLHonorCipherOrder on
    
    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

子域名泛解析與動態虛擬主機

若需支援大量子域名 (如 user1.example.com, user2.example.com...),可採用 mod_vhost_alias 動態映射,避免逐個建立配置:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com
    VirtualDocumentRoot /var/www/example.com/subdomains/%1
    # %1 = 子域名第一段 (user1, user2...)
    
    <Directory /var/www/example.com/subdomains>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

搭配 DNS 泛解析 *.example.com A @,新增子域名只需建立對應目錄,無需重啟 Apache。

舊版 rewrite 映射方案 (參考用,不推薦新專案使用)

原文提到的 RewriteMap 方案適用於極舊環境,現代 Apache 已內建 mod_vhost_alias 效能更好、配置更簡潔。

常見問題與除錯技巧

  • 配置語法檢查: apachectl configtest 或 httpd -t
  • 查看載入的虛擬主機: httpd -S (顯示解析順序、ServerName/ServerAlias、DocumentRoot)
  • 權限問題: 確認 Apache 執行使用者 (www-data/apache) 對 DocumentRoot 有讀取/執行權限,SELinux 環境需 chcon -R -t httpd_sys_content_t /var/www/...
  • 日誌分析: 善用 goaccess、awstats 或 ELK Stack 分析存取日誌。

從 Apache 2.2 遷移到 2.4 關鍵差異

項目2.22.4
存取控制Order allow,deny / Allow from allRequire all granted
NameVirtualHost必要可省略 (自動啟用)
預設 MPMpreforkevent (建議生產用 event/worker)

Apache 虛擬主機配置的核心在於「模組化、標準化、可維護」。建立 sites-available/sites-enabled 目錄結構,每站一檔,配合版控系統管理配置變更,才是專業運維的正確姿勢。

Copyright © Windows教程網 All Rights Reserved