localhost 與 IPv4, IPv6

IPv4 的 localhost 是 127.0.0.1
IPv6 的 localhost 是 ::1

當使用者在開啟 IPv6 的 Windows 7 環境下,連線到 localhost 可能會連到的是 IPv6 的目標,而當 Server 未 listen IPv6 時,就會造成 timeout 或 delay。

簡單的例子:

Windows 7 開啟 IPv6,MySQL Server 預設只 listen IPv4,結果就是當一個本機 IIS 上的網頁要連線本機(localhost)資料庫時,就在那邊 delay 個幾秒鐘才連上。

這時,可以透過修改 %SystemRoot%\System32\drivers\etc\hosts 檔案,將 127.0.0.1 前面的 # 去掉,亦可以在連線設定時設定 IP 版本特定的 host ip,例如 127.0.0.1 或 ::1 取代 localhost。

但如果讓開發的程式能在 IPv4、IPv6 下通用,還是用 localhost 並設定 hosts 檔案的方式會比較妥當,不過當然要考慮到 server 端到底聽哪個協定的。

分類: 資訊技術相關雜記。這篇內容的永久連結