Apache-2.2

使用 Apache 的 IPv6 的 ServerName

  • April 10, 2015

我基本上是在嘗試將:443 上的每個請求重定向到:443。我發現這種方法可以很好地工作,一旦訪問者丟棄 SSL 警報(當然,我的證書對我的 IP 無效),他就會被正確重定向:

<VirtualHost *:443>
   SSLEngine off
   ServerAdmin hi@mom.eu
   ServerName 11.11.11.11
   Redirect Permanent / https://domain.eu/
</VirtualHost>

但是我今天在我的伺服器上啟用了 IPv6,所以我也想重定向它,但問題從這裡開始。

<VirtualHost *:443>
   SSLEngine off
   ServerAdmin hi@mom.eu
   ServerName [ff:ff:8:ff::1]         //(with or without '[]')
   Redirect Permanent / https://domain.eu/
</VirtualHost>

它根本行不通。我不確定這是否是因為 ServerName 參數中缺少對 IPv6 的支持,但我有點卡住了。

你有什麼主意嗎 ?謝謝 !

據我所知,ServerName 指令不允許使用 IPv6 地址。

它不接受 IPv6 地址的方括號和冒號字元。

該格式僅對 Listen、NameVirtualHost 和 VirtualHost 指令有效。

根據您的配置(即:如果您在同一個 Apache 安裝上服務多個域),您可以嘗試以下操作。

像往常一樣創建一個虛擬主機,而不是用 IPv6 地址定義一個 ServerName,而是用一個正確的 dns 名稱(不一定真的存在)來定義它。

現在的訣竅是將此虛擬主機放在該 IP:Port 的所有其他虛擬主機之上。

這樣,當使用者對未由 Apache 處理的域(或您的情況下的 IP)發出請求時,它將嘗試使用為該 IP:Port 找到的第一個 VirtualHost 來服務該請求。

引用自:https://serverfault.com/questions/659495