眾所周知,Azure 的伺服器在部署的時候只會分配一個動態的 IPv4 地址,在其上架設的網站自然也不會支援 IPv6。為什麼花這麼大的勁折騰網站的 IPv6 支援?這是一種必然趨勢,當然,也是為自己的網站 Future Ready。
為伺服器申請一個公網 IPv6 地址
於是我們首先要為伺服器申請到一個公網 IPv6。
微軟對 IPv6 的重視程度似乎沒有那麼高,在不久前,為伺服器新增 IPv6 還需要動用 Powershell 部署 Load Balancer 實現,具體有多複雜可以看看這篇文件,屬實是非常勸退。
好在現在微軟已經為 Azure 引入了原生 IPv6 支援,但部署起來依然相對繁瑣,而且相當的不友好,之前甚至連文件都沒有,不過現在終於把文件給補上了。
新增 IPv6 地址空間和子網
根據文件,首先為現有的虛擬網絡分配一個子網空間:
- 登入到 Azure 門户。
- 在門户頂部的搜尋框中,輸入「虛擬網絡」。 在搜尋結果中,選擇「虛擬網絡」。
- 在「虛擬網絡」中,選擇你自己的虛擬網絡。
- 在「設定」中選擇「地址空間」。
- 選中「新增其他地址範圍」框。 輸入「2404:f800:8000:122::/63」。
- 選擇「儲存」。
- 在「設定」中選擇「子網」。
- 在「子網」中,從列表中選擇子網名稱。
- 在子網配置中,選擇「新增 IPv6 地址空間」框。
- 在「IPv6 地址空間」中,輸入「2404:f800:8000:122::/64」。
- 選擇「儲存」。


申請一個公共 IPv6 地址
在搜尋欄裏搜尋「公共 IP 地址」,然後按以下配置新建一個 IP:
| 設定 | 值 |
|---|---|
| IP 版本 | 選擇「IPv6」。 |
| SKU | 選擇「標準」。 |
| IPv6 IP 地址配置 | |
| 名稱 | 隨意 |
| 空閒超時(分鐘) | 保留預設值「4」 |
| 訂閲 | 選擇你自己的訂閲 |
| 資源組 | 選擇你的資源組。 在本示例中,資源組的名稱為 myResourceGroup |
| 位置 | 選擇你伺服器所在的位置,例如我的 East Asia |
| 可用性區域 | 選擇「區域冗餘」 |
將 IPv6 新增到機器上
開啓機器的管理面板,停止伺服器。轉到網絡選項卡,在「網絡介面」邊上開啓你的網絡介面。

然後,在網絡介面的設定裏選擇「IP配置」選項卡,選擇新增一個 IP 配置。並在彈出的選項裏填入以下內容:
| 設定 | 值 |
|---|---|
| 名稱 | 隨意 |
| IP 版本 | IPv6 |
| 專用 IP 地址設定 | |
| 分配 | 保留預設值「動態」 |
| 公共 IP 地址 | 選擇「關聯」 |
| 公共 IP 地址 | 選擇你新建好的 IPv6地址 |
完成後確定儲存就可以啓動伺服器了,這時你的伺服器已經擁有並可以使用 IPv6 地址。
修改 Nginx 配置
如果這時使用純 IPv6 網絡環境訪問部署在這台伺服器上的網站,發現還是無法訪問,就需要修改 Nginx 配置。
將以下兩行插入到 Nginx 配置的 Server 塊中實現監聽 IPv6 的功能。
| |
插入正確的Nginx配置檔案看起來應該類似這樣:
| |
修改網頁內容
此時託管在這台伺服器上的網站已經可以透過 IPv6 訪問了,但此時使用純 IPv6 開啓這個網站很有可能會得到一個不完整的頁面。這是因為你的網站上還有外掛在 CDN 上的資源:例如圖片和一些前端檔案,而 CDN 不支援 IPv6 訪問。這時就要根據具體情況替換網頁內容上的外掛資源。
我這裏的實際情況是:
- CDN 前端資源庫支援 IPv6 訪問,無需作任何修改。
- 大部分圖片託管在騰訊雲物件儲存並外掛在網頁上,經測試這項服務預設並不支援 IPv6。
- 其它資源均透過伺服器本身載入。
搜尋得知騰訊雲物件儲存有一個雙棧域名,使用這個域名即可達到目的。於是就開始了批次替換:登進 WP 後台,每個文章開啓代碼編輯器,把圖片的連結批次替換,更新文章。一氣呵成。再次開啓文章測試,所有的資源都正常載入。

更簡單直接的方法?
如果你的網站在大陸已經備案,那麼新增 IPv6 支援的最簡單辦法就是全站 CDN,上述內容全都不用考慮。
不過這種辦法還需要想到其它的問題,例如,怎麼設定快取重新整理週期,不過這就不是這篇文章考慮的問題了(才不是因為我沒有備案用不了大陸的 CDN)。
評論已停用,直到您接受功能性 Cookie。