為Azure伺服器上執行的網站啓用IPv6支援

眾所周知,Azure 的伺服器在部署的時候只會分配一個動態的 IPv4 地址,在其上架設的網站自然也不會支援 IPv6。為什麼花這麼大的勁折騰網站的 IPv6 支援?這是一種必然趨勢,當然,也是為自己的網站 Future Ready。

為伺服器申請一個公網 IPv6 地址

於是我們首先要為伺服器申請到一個公網 IPv6。

微軟對 IPv6 的重視程度似乎沒有那麼高,在不久前,為伺服器新增 IPv6 還需要動用 Powershell 部署 Load Balancer 實現,具體有多複雜可以看看這篇文件,屬實是非常勸退。

好在現在微軟已經為 Azure 引入了原生 IPv6 支援,但部署起來依然相對繁瑣,而且相當的不友好,之前甚至連文件都沒有,不過現在終於把文件給補上了。

新增 IPv6 地址空間和子網

根據文件,首先為現有的虛擬網絡分配一個子網空間:

  1. 登入到 Azure 門户
  2. 在門户頂部的搜尋框中,輸入「虛擬網絡」。 在搜尋結果中,選擇「虛擬網絡」。
  3. 在「虛擬網絡」中,選擇你自己的虛擬網絡。
  4. 在「設定」中選擇「地址空間」。
  5. 選中「新增其他地址範圍」框。 輸入「2404:f800:8000:122::/63」
  6. 選擇「儲存」。
  7. 在「設定」中選擇「子網」。
  8. 在「子網」中,從列表中選擇子網名稱。
  9. 在子網配置中,選擇「新增 IPv6 地址空間」框。
  10. 在「IPv6 地址空間」中,輸入「2404:f800:8000:122::/64」
  11. 選擇「儲存」。

虛擬網絡上新增IPv6地址空間

給子網新增IPv6

申請一個公共 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 的功能。

1
2
listen [::]:80;
listen [::]:443 ssl http2;

插入正確的Nginx配置檔案看起來應該類似這樣:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
server
{
    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    server_name wordpress.l3zc.com www.l3zc.com l3zc.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/wordpress.l3zc.com;

    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }

    ssl_stapling on;
    ssl_stapling_verify on;

    #省略以下部分
    ......
    ......
}

修改網頁內容

此時託管在這台伺服器上的網站已經可以透過 IPv6 訪問了,但此時使用純 IPv6 開啓這個網站很有可能會得到一個不完整的頁面。這是因為你的網站上還有外掛在 CDN 上的資源:例如圖片和一些前端檔案,而 CDN 不支援 IPv6 訪問。這時就要根據具體情況替換網頁內容上的外掛資源。

我這裏的實際情況是:

  • CDN 前端資源庫支援 IPv6 訪問,無需作任何修改。
  • 大部分圖片託管在騰訊雲物件儲存並外掛在網頁上,經測試這項服務預設並不支援 IPv6。
  • 其它資源均透過伺服器本身載入。

搜尋得知騰訊雲物件儲存有一個雙棧域名,使用這個域名即可達到目的。於是就開始了批次替換:登進 WP 後台,每個文章開啓代碼編輯器,把圖片的連結批次替換,更新文章。一氣呵成。再次開啓文章測試,所有的資源都正常載入。

替換COS雙棧域名

更簡單直接的方法?

如果你的網站在大陸已經備案,那麼新增 IPv6 支援的最簡單辦法就是全站 CDN,上述內容全都不用考慮。

不過這種辦法還需要想到其它的問題,例如,怎麼設定快取重新整理週期,不過這就不是這篇文章考慮的問題了(才不是因為我沒有備案用不了大陸的 CDN)。

採用 CC BY-NC-SA 4.0 協議進行許可
上次改過於 2026 年 3 月 17 日 13:08 +0800