[食譜好菜] 在 Azure App Service 上自訂網域讓 Cloudflare 代理

Cloudflare 是一間提供給網站使用的綜合網路服務供應商,做為一個在網站前面的網路服務,Cloudflare 的 CP 值沒有第一也有第二,不過它一直是虧損的狀態,有點擔心有一天它錢燒完倒了,扯遠了,回到本文的主題,我們在 Azure App Service 如何自訂網域讓 Cloudflare 來代理?

購買網域交給 Cloudflare 代為解析

我先假設我們在 Azure App Service 已經有應用程式在上面執行了,所以下一步就要去網域名稱提供商(例如:GoDaddy)購買自己想要的網域名稱,接著到 Cloudflare 去註冊一個帳號,然後 Add a Site 把買到的網域名稱加進 Cloudflare,過程當中就會引導我們,將解析網域名稱的工作,從網域名稱提供商那邊移轉給 Cloudflare,這個步驟不難,照著做很容易成功,所以我就不多做說明,不熟悉的朋友可以在文章底下留言,或是到粉絲團私訊我,看看我可以怎麼來幫忙?

設定 Cloudflare DNS

接下來,我們到 Cloudflare DNS 頁面底下,新增三筆 DNS 記錄:

A Recored

第一是新增一筆 A Record,點擊「Add record」按鈕,「Type」選 A,「Name」輸入 @,「IPv4 address」輸入 Azure 分配給我們 App Service 的 IP,「Proxy status」先保持 DNS only,最後點擊「Save」按鈕。

CNAME Record

再來這個 CNAME Record 就看需求了,通常我們都會有一個 www 開頭的網址,如果不需要的話,暫時就不用新增 CNAME Record。

我們一樣在 Cloudflare DNS 設定畫面,點擊「Add record」按鈕,「Type」選 CNAME,「Name」輸入 www,「Target」輸入 @,「Proxy status」先保持 DNS only,最後點擊「Save」按鈕。

TXT Record

最新是 TXT Record,這個是讓 Azure App Service 用來驗證網域所有權用的,在 Cloudflare DNS 設定畫面,點擊「Add record」按鈕,「Type」選 TXT,「Name」輸入我們購買的網域名稱,「Content」輸入 Azure App Service 為我們產生的網域名稱,最後點擊「Save」按鈕。

在 Azure App Service 自訂網域

接著到 Azure App Service 的設定頁面,在「自訂網域」頁籤裡面,找到一個「新增自訂網域」的按鈕,按下去之後在跳出來的刀鋒視窗中,輸入我們購買的網域名稱,點擊「驗證」。

如果剛剛在 Cloudflare 的設定都正確的話,我們應該會得到綠燈。

還有一個 www 開頭的網域名稱,我們一樣如法炮製。

在 Cloudflare 開啟代理

自訂的網域都設定成功之後,我們回到 Cloudflare DNS 設定畫面,將我們剛剛新增的 A Record 及 CNAME Record 的 Proxy status 設定為 Proxied,這樣 Request 才會先打到 Cloudflare,再轉送給我們的應用程式,進而起到保護的作用。

SSL 狀態不安全的問題

整個都弄好之後,沒意外的話,我們購買的網域名稱應該已經打通了,但是我們會發現自訂的網域在 Azure App Service 的後台顯示不安全,這就會讓人心裡毛毛的。

不過先不用擔心,我們自訂的網域現在是交由 Cloudflare 來解析及代理,Cloudflare 非常非常佛心,它為每一個使用 Cloudflare 服務的網域都配了一個 Universal SSL,如果還是不放心,想要在 Azure App Service 為自訂的網域繫結 SSL 憑證的話,Cloudflare 也提供了它們自家簽發的免費 SSL 憑證,我們只要到 Cloudflare 後台「SSL/TLS」選單底下的「Origin Server」頁面,點擊「Create Certificate」就可以產生 SSL 憑證,我們再拿到 Azure App Service 繫結上去就行了,更詳細的步驟請參考這篇文章 - Azure App Service and Cloudflare with Full SSL (Strict)

還有,如果我們擔心有駭客繞過 Cloudflare 直接存取我們的 App Service 怎麼辦? 這個我們可以透過設定 App Service 「網路」的「存取控制」,僅允許 Cloudflare 的 IP 通過來防止外部的直接存取。

Cloudflare 的 IPv4 及 IPv6 清單,可以在這裡找得到。

以上,透過 Cloudflare 代理自訂網域來保護 Azure App Service 的設定方式就分享到這邊,希望對 Azure App Service 及 Cloudflare Proxy 有興趣的朋友能起到一點幫助。

參考資料

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學