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

导语
Azure Front Door 是一个全球规模的网站入口服务。包含DDOS,WAF防火墙、网站故障转移、地区加速等主要功能。我曾在《未雨绸缪 | 一文简介 Azure Front Door》中介绍过。本文具体介绍 Azure Front Door 里的 URL 重定向功能的使用。
URL 重定向主要用于将用户重新导航到某个资源的新位置。最常见的就是对于被迁移的资源,其URL发生了改变,而搜索引擎、其他网站,或用户浏览器收藏夹里的地址还没来得及更新,这时候访问资源的旧地址,就会404。所以我们可以通过 URL 重定向,将失效的 URL 导航到新的 URL 上,保证用户能持续访问。
以我的博客为例。早期我的 RSS 订阅地址为:
https://edi.wang/subscription/rss
而后来该地址改为
https://edi.wang/rss
而大量用户的RSS阅读器并没有更新订阅地址,因此 Azure Application Insights 上观察到大量 404 请求。此时就需要做 URL 重定向。
另外,当一个网站迁移到新域名时,也需要做 URL 重定向,以保证资源持续可访问。在面临一些突发的市场或政治事件时,通过 URL 重定向阻止用户访问某些网页,也是最快速的响应方式。
对于一个网站,我们能够在很多环节做 URL 重定向及URL 重写。例如 ASP.NET Core 内置的 URLRewrite 中间件、IIS 的 URL Rewrite 模块,甚至自己 996 写一堆 if 也能实现。在企业环境中,我们也可以诸如 F5 BIG-IP 这样的网络产品上配置 URL 重定向及URL重写,从而实现 0 代码侵入性。而购买 F5 是一笔巨大的开销,既然已经买了 Azure,那么就可以使用 Azure Front Door 提供的功能,从而能让我们在不修改网站程序配置和源代码的情况下,实现 URL 重定向或重写。
同域名下资源位置更改
以我博客的RSS地址重定向配置为例。我需要将 /subscription/rss 重定向到 /rss,操作步骤如下:
打开 Front Door Designer,点击 Routing rules 上面的 + 号

输入一个 Name,作为改规则的名称,可以任意。
Accepted protocal 根据自己需要,选择 HTTP 或HTTPS(也可以全部),由于我的博客只允许 HTTPS 访问,因此在这里我选 HTTPS only。
PATTERNS TO MATCH 中,输入 /subscription/rss,这是一种精确匹配。它也支持使用 * 通配符匹配更广泛的规则。
https://docs.microsoft.com/en-us/azure/frontdoor/front-door-route-matching

Route type 选择 Redirect。
Redirect type 选择 Moved (301)。
Destination path 选择 Replace,并设置为 /rss

保存并应用后,稍等片刻,就能看到效果了。现在访问 https://edi.wang/subscription/rss 就会被自动跳转到 https://edi.wang/rss 而我的应用本身并不需要做任何修改。

跳转到其他域名
还是以我博客为例,我不想让用户通过 Azure Front Door 的默认域名访问我的网站,但默认域名又删不掉,于是我只能让将用户跳转到主域名上。例如,用户访问 https://ediwangfd.azurefd.net/page/about 就会自动跳转到 https://edi.wang/page/about 步骤如下:
将不希望用户访问的域名(如 ediwangfd.azurefd.net)从其他规则中删除。
在 Frontends/domains 中选择你不希望用户直接访问的域名。
PATTERNS TO MATCH 里保留默认的 /*,即匹配所有请求路径。

Redirect type 我选择了 302。它与 301 的区别是:302 表示该重定向为临时的,301 表示资源的迁移是永久的。当搜索引擎看到 302 时,不会更新自己收入的原始URL,但是遇到 301 就会将网站记录更新为新的 URL。因此,这里请根据自己业务需要选择。
Destination host 选择 Replace,并输入想要跳转到的域名,例如 edi.wang

保存后稍等片刻,用户对 azurefd.net 资源的访问就会被跳转到主域名。

参阅官网,了解更多 Azure Front Door 技能:
https://azure.microsoft.com/en-us/services/frontdoor/

汪宇杰博客
.NET | Azure | 微软MVP
长按二维码获取我的最新技术分享
喜欢本篇内容请点个在看





