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

导语

跨国服务的网站通常需要针对不同国家和地区的用户显示不同的内容。通常我们会根据用户的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 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。

总结

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

汪宇杰博客

Azure | .NET | 微软 MVP

无广告,不卖课,做纯粹的技术公众号

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

  1. 2022年全球及各个国家、地区互联网用户数量,互联网用户占比、上网时长及上网原因分析[图]

    2021年,全球总人口数量达到78亿,互联网用户数量达到48亿人,截止2022年1月,全球互联网用户数量达到49.5亿人,同比增长4%,互联网用户占总人口的62.5%,每个互联网用户平均每天使用互联网 ...

  2. Django 现可在 Windows Azure 上使用

    编辑人员注释:本文章由 NirMashkowski 撰写. Django 是一种高级 Python Web 框架,它鼓励快速开发和干净.实用的设计.Django现可在Windows Azure Web ...

  3. 快速获取Windows系统上的国家和地区信息

    Windows系统上包含了200多个国家和地区的数据,有时候编程需要这些资料.以下代码可以帮助你快速获取这些信息. 将Console语句注释掉,可以更快的完成分析. 1 static void Mai ...

  4. Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站

    点击上方蓝字关注"汪宇杰博客" 导语 微软智慧云 Azure 上虽然早就有 App Service 这种完全托管的 PaaS 服务可以让我们分分钟建网站.但是不自己配一下环境,就不 ...

  5. 如何在微软Azure上搭建个人博客网站

    手动配置服务器对很多读者来说可能并不是一件容易的事.好在在Azure中,微软已经就搭建WordPress个人博客给出了一站式的解决方案,对于零基础读者来说,在Azure上搭建WordPress即意味着 ...

  6. 在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像

     发布于 2014-12-11 作者 陈阳 FreeBSD 基础镜像现已登陆中国的 VM Depot! 对于青睐 BSD 而非 Linux 的开源爱好者来说,这无疑是个好消息.同时,随着该基础镜像 ...

  7. Aiot-->第四章(Azure上的物联网服务)

    目录 1.物联网项目落地的几大难点 1.1需满足海量设备接入需要 1.2要尽可能兼容多种设备类型,硬件高低配,不同开发语言 1.3设备身份验证,海量设备批量验证 1.4对实时流式数据分析要求越来越高 ...

  8. WhatWeb 网站指纹识别软件

    一.WhatWeb介绍 WhatWeb是一个开源的网站指纹识别软件. WhatWeb识别网站.它的目标是回答"那个网站是什么?"这个问题. WhatWeb可识别Web技术,包括内容 ...

  9. Kaggle上的犬种识别(ImageNet Dogs)

    Kaggle上的犬种识别(ImageNet Dogs) Dog Breed Identification (ImageNet Dogs) on Kaggle 在本节中,将解决在Kaggle竞赛中的犬种 ...

最新文章

  1. URAL 1091. Tmutarakan Exams
  2. 使用DotNetty编写跨平台网络通信程序
  3. 2020项目商机_2020未来商机,一万元可以做什么项目
  4. ROS Rviz 显示轨迹 Python
  5. 图像阈值中的函数简述
  6. 职教云python题和答案_智慧职教云课堂Python程序设计基础题目及答案
  7. anconda使用---使用conda管理python环境
  8. python图片二值化提高识别率
  9. py-faster-rcnn +cudnn V5
  10. SQL Server 2005系列教学(12) 导入导出服务
  11. DSP6678入门必看
  12. Altium Designer之泪点和常规铺铜操作笔记
  13. 怎样运行一个php的项目,第一章 如何加载运行已发布的PHP项目
  14. oracle删除闪回文件,oracle的闪回查询,闪回删除:
  15. Spring周期总结
  16. mysql和vba哪里自学_自学 VBA 到中等水平一般需要多久?
  17. 07-提取字符串中的数字数组
  18. ps cs6 mac破解方法
  19. 聚苯乙烯微球为成孔模板制备多孔PI/HMSNs复合膜/交联氨基聚苯乙烯微球/羧基聚苯乙烯微球
  20. iOS 使用HMAC

热门文章

  1. Remoting and MSMQ 结合做的一个DEMO
  2. fatal error C1001: INTERNAL COMPILER ERROR
  3. query string parameters什么意思_public static void main(String[] args) 是什么意思?(转)...
  4. error while loading shared libraries: libmysqlclient.so.16: cannot open
  5. 【转】用Fiddler做抓包分析详解
  6. bzoj2460: [BeiJing2011]元素
  7. 求助:关于sql如何统计时间的问题
  8. stm32 usmart使用
  9. Technical User Stories – What, When, and How?
  10. JS:1.3,函数(function)