為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 年 7 月 8 日 17:02 +0800