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