擁有一台雲服務器(單公網 IP),需綁定兩個域名 www.a.com 和 www.b.com,分別訪問時展示完全不同的網站首頁。這是典型的「共享 IP 多站點」架構,核心技術是 虛擬主機。
HTTP/1.1 規定客戶端請求必須包含 Host 頭,標識目標域名。Web 服務器(Nginx、Apache、IIS、Caddy 等)根據該頭部信息,將請求路由到對應的站點配置目錄,實現「一 IP 多站點」。
# /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
<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>
www.a.com {
root * /var/www/a.com
file_server
}
www.b.com {
root * /var/www/b.com
file_server
}
在域名服務商控制台為 www.a.com 和 www.b.com 添加 A 記錄,指向該雲服務器公網 IP。生效後,瀏覽器訪問域名即可解析到同一 IP,Web 服務器再依 Host 頭分發。
certbot --nginx 或 certbot --apache 自動申請 Let's Encrypt 證書並修改配置。server_name 的請求會落入默認站點,建議顯式配置一個返回 444 或靜態頁面的默認 server 避免信息洩露。publicPath 或基礎路徑,避免跨域或 404。access_log/error_log,便於排查。單台服務器多域名部署的核心是 虛擬主機 + Host 頭路由。Nginx 因性能與配置平衡成為首選;Caddy 則以自動 HTTPS 降低運維門檻。掌握此技能,即可低成本托管無限數量的獨立站點。