Azure 上的网站如何识别不同国家和地区的用户
點擊上方藍字關注“汪宇杰博客”
導語
跨國服務的網站通常需要針對不同國家和地區的用戶顯示不同的內容。通常我們會根據用戶的IP地址識別Ta所在的國家和地區,而自己編寫代碼以及購買和維護IP數據庫,或使用三方的IP數據服務,是潛在的996成本。雖然完整的IP數據庫可以識別所有國家和地區,但很多時候,網站想要的只是區分個別幾個國家和地區,如何不996快速實現這個需求呢?
又見 Azure Front Door
任何能用錢解決的問題,都不是問題。而馬云說過,錢是這個世界上最容易得到的東西,因此這個問題很好解決。我們請出特別貴的老朋友 Azure Front Door !關于 AFD 的入門介紹,可以先看我之前的文章:
未雨綢繆 | 一文簡介 Azure Front Door
使用 Azure Front Door 配置網站URL重定向
如何防止用戶訪問Azure Front Door后臺的App Service域名
這次我們將以識別中國用戶為例,演示如何在 Azure Front Door 上只點點鼠標,不寫代碼,不購買三方IP數據服務解決這個問題。
配置自定義路由引擎
在 Front Door 管理面板進入 Rules engine configuration 菜單,點擊 Add
指定一個?Rules engine name,如 Moonglade1055,代表用了Azure的我10點上班,5點下班,工作5天。這個規則引擎下可以添加多條自定義規則。
點擊 Add rule,增加一條規則,例如 MarkChinaRequests。我們要根據用戶的IP地址匹配Ta的國家和地區。
點擊 Add a condition,選擇 Remote address,Operator 中選擇 Geo Match,然后搜索并勾選 China,同時別忘了勾選 Hong Kong 和 Taiwan,他們是祖國不可分割的一部分!
點擊 Add an action,選擇 Request header,Append,給網站的請求增加一個自定義的header,名為 geo-match,值為 china。
完成后點擊 Save。
這時我們能在 Rule engines 的列表里看到剛才添加的規則引擎,在它的菜單里選擇 Associate routing rule。
勾選網站流量必經的路由,符合這些路由規則的請求就會被帶上geo-match的header。
保存后稍等幾分鐘,AFD的自定義路由引擎就會生效。
在網站中識別用戶地區
以 ASP.NET Core 網站為例,我們現在只要讀取geo-match這個http header,即可得到AFD加上的地區值。
Request.Headers["geo-match"]
于是,網站就能根據用戶的地區顯示不同的內容了。而我們的網站代碼里,絲毫沒有讀取用戶IP,查詢IP數據庫的代碼,非常干凈。當然,有了header以后也最好別寫一堆 if else 來搞??梢詣摻▊€middleware讀取geo-match做成可拓展可配置的模塊,那將是無比nice。
總結
貴的東西除了貴,沒有別的缺點。
汪宇杰博客
Azure | .NET |?微軟 MVP
無廣告,不賣課,做純粹的技術公眾號
總結
以上是生活随笔為你收集整理的Azure 上的网站如何识别不同国家和地区的用户的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 程序包管理器 1.0 正
- 下一篇: 开源高性能RISC-V处理器“香山”问世