首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

單台雲服務器配置多域名虛擬主機實戰指南

     編輯:程式設計疑難解答

需求場景

擁有一台雲服務器(單公網 IP),需綁定兩個域名 www.a.com 和 www.b.com,分別訪問時展示完全不同的網站首頁。這是典型的「共享 IP 多站點」架構,核心技術是 虛擬主機。

核心原理:HTTP Host 頭

HTTP/1.1 規定客戶端請求必須包含 Host 頭,標識目標域名。Web 服務器(Nginx、Apache、IIS、Caddy 等)根據該頭部信息,將請求路由到對應的站點配置目錄,實現「一 IP 多站點」。

主流 Web 服務器配置示例

Nginx(推薦,高性能、配置簡潔)

# /etc/nginx/sites-available/a.com
server {
    listen 80;
    server_name www.a.com a.com;
    root /var/www/a.com;
    index index.html index.htm;
    location / { try_files $uri $uri/ =404; }
}

# /etc/nginx/sites-available/b.com
server {
    listen 80;
    server_name www.b.com b.com;
    root /var/www/b.com;
    index index.html index.htm;
    location / { try_files $uri $uri/ =404; }
}

# 啟用站點並重載
ln -s /etc/nginx/sites-available/a.com /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/b.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Apache (httpd)

<VirtualHost *:80>
    ServerName www.a.com
    ServerAlias a.com
    DocumentRoot /var/www/a.com
    <Directory /var/www/a.com>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.b.com
    ServerAlias b.com
    DocumentRoot /var/www/b.com
    <Directory /var/www/b.com>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Caddy v2(自動 HTTPS,配置極簡)

www.a.com {
    root * /var/www/a.com
    file_server
}

www.b.com {
    root * /var/www/b.com
    file_server
}

DNS 解析配置

在域名服務商控制台為 www.a.com 和 www.b.com 添加 A 記錄,指向該雲服務器公網 IP。生效後,瀏覽器訪問域名即可解析到同一 IP,Web 服務器再依 Host 頭分發。

進階:HTTPS 證書管理

  • Nginx/Apache:使用 certbot --nginx 或 certbot --apache 自動申請 Let's Encrypt 證書並修改配置。
  • Caddy:內建 ACME 客戶端,零配置自動獲取並續期證書,強烈推薦新項目使用。

常見坑點提醒

  1. 防火牢/安全組:確保雲廠商控制台放行 80/443 端口。
  2. 默認站點:未匹配到任何 server_name 的請求會落入默認站點,建議顯式配置一個返回 444 或靜態頁面的默認 server 避免信息洩露。
  3. 靜態資源路徑:前端構建時注意 publicPath 或基礎路徑,避免跨域或 404。
  4. 日誌分離:為每個虛擬主機配置獨立 access_log/error_log,便於排查。

總結

單台服務器多域名部署的核心是 虛擬主機 + Host 頭路由。Nginx 因性能與配置平衡成為首選;Caddy 則以自動 HTTPS 降低運維門檻。掌握此技能,即可低成本托管無限數量的獨立站點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved