傳統認知認為「一個 IP 只能綁一張 SSL 憑證」,導致托管多個 HTTPS 站點需多張網卡或多 IP。實則透過IP 別名(IP Aliasing),單一實體網卡即可綁定多個邏輯 IP,配合 Apache NameVirtualHost + <VirtualHost *:443> 機制,實現單伺服器多 SSL 站點共存。本文以實戰案例完整說明 Linux/Solaris 設定與 Apache 虛擬主機配置。
hr.company.com,需對外 HTTPS。finance.company.com,同樣需 HTTPS。# 臨時生效(重開機失效)
ifconfig eth0:1 192.168.10.10 netmask 255.255.255.0 up
ifconfig eth0:2 192.168.10.11 netmask 255.255.255.0 up
# 持久化(RedHat/CentOS 6/7)
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF
DEVICE=eth0:1
BOOTPROTO=static
IPADDR=192.168.10.10
NETMASK=255.255.255.0
ONBOOT=yes
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:2 <<EOF
DEVICE=eth0:2
BOOTPROTO=static
IPADDR=192.168.10.11
NETMASK=255.255.255.0
ONBOOT=yes
EOF
# 重啟網路服務
systemctl restart network
核心參數檢查: cat /proc/net/alias* 檔案存在即表示核心支援 IP 別名。現代 Linux 核心 (2.6+) 皆內建支援。
ifconfig eth0:1 plumb
ifconfig eth0:1 192.168.10.10 netmask 255.255.255.0 up
# 持久化
echo "192.168.10.10" > /etc/hostname.eth0:1
192.168.10.10 hr-proxy.company.com
192.168.10.11 finance-proxy.company.com
公開 DNS 將 hr.company.com、finance.company.com 解析至對應公網 IP(或同一公網 IP 配合防火牆 DNAT 導向內網別名 IP)。
Listen 443
NameVirtualHost 192.168.10.10:443
NameVirtualHost 192.168.10.11:443
<VirtualHost 192.168.10.10:443>
DocumentRoot "/web/hr/docs"
ServerName hr.company.com:443
SSLEngine on
SSLCertificateFile "/etc/httpd/ssl/hr.company.com.crt"
SSLCertificateKeyFile "/etc/httpd/ssl/hr.company.com.key"
# 反向代理至內部 HR 應用伺服器
ProxyPass / https://10.0.1.50/
ProxyPassReverse / https://10.0.1.50/
</VirtualHost>
<VirtualHost 192.168.10.11:443>
DocumentRoot "/web/finance/docs"
ServerName finance.company.com:443
SSLEngine on
SSLCertificateFile "/etc/httpd/ssl/finance.company.com.crt"
SSLCertificateKeyFile "/etc/httpd/ssl/finance.company.com.key"
ProxyPass / https://10.0.1.60/
ProxyPassReverse / https://10.0.1.60/
</VirtualHost>
部分麵網卡啟用多 IP 後會進入混雜模式,捕獲同網段所有封包,增加 CPU 負擔與安全風險。
對策: 使用支援 VLAN/多隊列的智慧型網卡(Intel X550/I350 等),或改用 SR-IOV 虛擬功能 (VF) 替代傳統 IP 別名。
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
ProxyPreserveHost On
確保後端應用能正確識別原始協定與客戶端 IP。
搭配 mod_proxy_hcheck (Apache 2.4.21+) 或外部監控 (Zabbix/Prometheus) 實現後端節點健康檢查,失效自動摘除。
現代替代方案: 容器化部署 (Docker/K8s) + Ingress Controller (NGINX/Traefik) + cert-manager 自動簽發 Let's Encrypt 憑證,已成為新標準。IP 別名方案仍適用於舊版應用無法容器化、需支援非 SNI 客戶端、或無容器編排基礎設施的場景。