自定义域和CDN
如果你想使用邮件验证机制,如 SendGrid 的白签( whitelabel )功能(包括域名密钥),必须为你的应用程序使用自定义域名,这是因为这些功能需要你能为你的域修改DNS,我决定不使用这些功能,但我仍然决定要使用一个自定义域名 content.emailtheinternet.com 。
此外,Windows Azure CDN也是一项非常棒的服务,通过它可以让应用程序访问提速,我决定开启这项服务。
第1步:给 EmailTheInternet.com 创建CNAME记录
使用Windows Azure应用程序创建自定义域名非常简单,只需要去域名注册商控制面板创建一个从 emailtheinternet.com 到www. emailtheinternet.com 的域名转发即可。
图 3 设置域名转发
然后我再增加一个CNAME记录, 将“www”映射到 emailtheinternet.cloudapp.net (我从Windows Azure获得域名)。
图 4 将“www”映射到 emailtheinternet.cloudapp.net
最后,我想让邮件正确地路由,需要再增加一个MX记录,也映射到 emailtheinternet.cloudapp.net 。
图 5 增加MX记录
第2步:为存储账号开启CDN
为存储账号添加一个CDN端点就如点击一个按钮般简单,点击“启用CDN”按钮,就获得一个常规CDN端点( az2919.vo.smecnd.net )。
图 6 启用CDN
第3步:为CDN端点增加自定义域名
为存储账号或CDN端点增加一个自定义域名的过程是相同的,首先点击“管理”,进入CDN端点,输入自定义域名。
图 7 输入自定义域名
然后点击“生成密钥”按钮,这是我获得自定义域名验证的第一步。
图 8 生成的密钥信息
根据上图给出的指示,我增加了一条CNAME记录, 将生成的域名映射到 verify.azure.com 。
图 9 将生成的域名映射到 verify.azure.com
然后我返回门户,想通过点击来验证域名是否生效,下图显示了生效的自定义域名。
图 10 生效的自定义域名
自定义域名生效后,我再次回到域名注册商的控制面板, 将“ content ”CNAME映射到CDN端点 。
图 11 将“ content ”CNAME映射到CDN端点
你可能在上面的代码中发现我调用了一个叫做 Utility.GetCdnUrlForUri() 的方法,这个方法把Blob URI转换成使用CDN主机,我将其当作一个配置设置存储起来了。
{
var builder = new UriBuilder(uri);
builder.Host = RoleEnvironment.GetConfigurationSettingValue("CdnHostName");
return builder.Uri.AbsoluteUri;
}