前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Azure 上的网站如何识别不同国家和地区的用户

Azure 上的网站如何识别不同国家和地区的用户

作者头像
Edi Wang
发布2021-07-07 15:59:41
1.5K0
发布2021-07-07 15:59:41
举报
文章被收录于专栏:汪宇杰博客汪宇杰博客

点击上方蓝字关注“汪宇杰博客”

导语

跨国服务的网站通常需要针对不同国家和地区的用户显示不同的内容。通常我们会根据用户的IP地址识别Ta所在的国家和地区,而自己编写代码以及购买和维护IP数据库,或使用三方的IP数据服务,是潜在的996成本。虽然完整的IP数据库可以识别所有国家和地区,但很多时候,网站想要的只是区分个别几个国家和地区,如何不996快速实现这个需求呢?

又见 Azure Front Door

任何能用钱解决的问题,都不是问题。而马云说过,钱是这个世界上最容易得到的东西,因此这个问题很好解决。我们请出特别贵的老朋友 Azure Front Door !关于 AFD 的入门介绍,可以先看我之前的文章:

这次我们将以识别中国用户为例,演示如何在 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 headerAppend,给网站的请求增加一个自定义的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。

总结

贵的东西除了贵,没有别的缺点。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 汪宇杰博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档