使用 Power Pages 站点设置 Azure Front Door

作为网站制作者,您可以通过 Power Pages 使用 Azure Front Door 来使用其边缘缓存和 Web 应用程序防火墙 (WAF) 功能。 在本文中,您将了解如何使用 Power Pages 设置 Azure Front Door

备注

请按照以下步骤使用 Power Pages 设置 Azure Front Door:

  1. 设置网站用户将使用的 Azure Front Door 终结点和自定义域名
  2. 将您的 Power Pages 站点配置为原点
  3. 设置路由规则来缓存静态请求
  4. 设置 WAF 规则来分析传入请求
  5. 将网站设置为仅接受来自 Azure Front Door 的流量

设置 Azure Front Door 终结点和自定义域名

在本节中,您将了解如何设置 Azure Front Door 服务并为此设置启用自定义域名。

先决条件

  • 具有创建新服务访问权限的 Azure 订阅。

  • 自定义域名和 DNS 提供商的访问权限,以设置自定义域名。

  • 将用于自定义域名的 SSL 证书。 证书必须满足 Power Pages 的最低要求

  • 所有者访问 Power Pages,以设置自定义域名。

设置 Azure Front Door 终结点

备注

如果已创建 Azure Front Door 资源,请转到以下过程的步骤 3。

  1. 登录 Azure 门户,创建新的 Azure Front Door(标准或高级)资源。 详细信息:快速入门:创建 Azure Front Door 标准/高级配置文件 - Azure 门户

    创建 Azure Front Door 资源。

  2. 选择快速创建

    小费

    大多数 Azure Front Door 设置可以在以后更改。

    创建 Azure Front Door 和设置。

  3. 选择或填写以下详细信息以配置资源。

    选项 描述
    项目详细信息 与资源组织相关的设置,与任何其他 Azure 资源类似。
    订阅 选择将创建 Azure Front Door 资源的订阅。
    资源组 选择 Azure Front Door 资源组。 您还可以创建新的资源组。
    资源组位置 资源组的位置。
    配置文件详细信息 Azure Front Door 配置。
    客户 Azure Front Door 资源的名称。
    为 Azure Front Door 资源选择一个层。 对于本文,我们选择了高级层,它允许访问 WAF 的 Microsoft 管理的规则集和机器人预防规则集。
    终结点设置 Azure Front Door 终结点的设置。
    终结点名称 为 Azure Front Door 请求输入名称。 此名称是将为用户提供流量的实际 URL。 稍后,我们将设置一个指向此 URL 的自定义域名。
    来源类型 选择自定义
    源主机名 您的 Power Pages 站点的主机名。
    格式:yoursitename.powerappsportals.comyoursitename.microsoftcrmportals.com,开关没有 https://
    例如,contoso.powerappsportals.com
    专用链接 不要启用专用链接服务。
    缓存 启用缓存。 缓存为静态内容使用边缘缓存功能。
    缓存将在本文后面的“设置路由规则来缓存静态请求”中进一步讨论。
    查询字符串缓存行为 选择使用查询字符串。 此选项将确保如果页面具有满足查询字符串的动态内容,将考虑该查询字符串。
    压缩 启用压缩。
    WAF 策略 创建新 WAF 策略,或使用现有策略。
    有关 WAF 策略的信息,请转到本文后面的“设置 WAF 规则来分析传入请求”,另请参阅教程:使用 Azure 门户在 Azure Front Door 上创建 Web 应用程序防火墙策略
  4. 选择查看 + 创建,等待设置完成。 这通常需要 5 到 10 分钟。<

  5. 通过浏览到终结点 URL(例如,contoso.example.azurefd.net),验证它是否显示来自 Power Pages 站点的内容来验证设置。

    浏览终结点。

    小费

    如果您看到“404 找不到”响应,说明设置可能尚未完成。 请等待一会,然后重试。

设置自定义域名

到目前为止,Azure Front Door 终结点已设置为提供来自 Power Pages 后端的流量。 不过,此设置仍使用 Azure Front Door URL,这会导致 captcha 检查失败或缩放问题等问题。

当您使用与站点 URL 不同的 Azure Front Door 终结点 URL 时,Web 浏览器会拒绝 Power Pages 设置的 Cookie。 因此,您必须为站点和 Azure Front Door 终结点设置自定义域名。

  1. 在站点上设置自定义域名。 详细信息:添加自定义域名

  2. 通过执行以下操作,在 Azure Front Door 资源上启用站点自定义域名:

    1. 通过删除之前在 Power Pages 自定义域设置期间创建的 CNAME 记录来更新您的 DNS 提供商。 只应更新 CNAME;不要删除源主机名。 DNS 会将 CNAME 指向 Azure Front Door 终结点。 添加 CNAME 的唯一目的是确保自定义主机名会出现在 Power Pages 上。 这一出现可确保 Power Pages 可以通过 Azure Front Door 向此自定义域名提供流量,并且所有站点 Cookie 也会正确设置域。

    2. 按照以下步骤在 Azure Front Door 终结点上设置自定义域名:使用 Azure 门户在 Azure Front Door 标准/高级 SKU 上创建自定义域

  3. 检查以下各项验证设置:

    1. 自定义域名指向 Azure Front Door 终结点。 使用 nslookup 验证是否正确返回了 Azure Front Door 终结点的 CNAME 条目。 如果 CNAME 条目仍指向 Power Pages,您需要进行更正。

    2. 浏览到自定义域名将显示您的 Power Pages 网站页面。

执行这些步骤后,您已完成网站的基本 Azure Front Door 终结点设置。 在接下来的步骤中,您将更新各项设置和规则,以提高此配置的效率并更好地处理不同的用例。

将站点配置为源服务器

下一步是优化源服务器设置以确保设置正常工作。 在 Azure 门户上的 Azure Front Door 配置中使用终结点管理器来更新源组设置。

终结点管理器。

在您之前执行的快速创建设置期间,您输入了自动创建名为 default-origin-group(associated)(此名称可能因区域设置而异)的配置的终结点详细信息。 对于此步骤,您将修改 default-origin-group 的设置。 下图显示第一次打开源组时此步骤的设置呈现的状态。

首次看到的源组。

Azure Front Door 中的源代表 Azure Front Door 边缘服务器连接到的后端服务,以向用户提供内容。 您可以向 Azure Front Door 实例添加多个源,以从多个后端服务获取内容。

小费

Power Pages 在其服务层提供高可用性,因此在为站点设置源时,单个源服务器就足够了。

Power Pages 站点的单个源应指向您的站点的主机名(您之前设置的名称)。 如果您没有按照快速创建设置步骤操作,您可以添加一个指向您的站点主机名的新源。

下图显示了源配置的示例。

源配置。

使用以下设置配置 Power Pages 站点的源。

选项 配置类型或值
来源类型 选择自定义
源主机名 输入您的站点主机名。 例如,contoso.powerappsportals.com
源主机标头 输入自定义域名或保留为空。 前者确保 Azure Front Door 将源标头作为自定义域名发送;后者会使其通过用户在发起请求时提供的任何内容。
HTTP 端口 80
HTTPS 端口 443
优先级 1
粗细 1000
专用链接 已禁用
执行状态 选中启用此源复选框。

配置源并返回到源组后,更新运行状况探测和负载均衡选项的设置,如下表所述。

选项 配置类型或值
运行状况探测 运行状况探测是一个机制,可确保源服务启动并运行,并根据探测结果做出流量路由决定。 在此例中,我们不需要运行状况探测,因此我们将其关闭。
负载平衡 因为我们设置了单个源并且关闭了运行状况探测,所以此设置在这一设置中不起任何作用。

验证源组配置是否如下图所示。

验证源配置。

设置路由规则来缓存静态请求

路由确定我们如何使用 Azure Front Door 的边缘缓存功能提高站点的可扩展性。 设置路由还是确保我们不会缓存站点提供的动态内容的重要步骤,否则可能导致意外的数据访问。

配置路由。

对于规则设置,我们将需要执行以下操作:

  1. 设置路由配置
  2. 设置规则集
  3. 将规则集与路由关联
  4. 验证规则和路由配置

设置路由配置

要设置路由配置,在左侧窗格中选择终结点管理器,选择路由,然后选择默认路由。 默认路由将在快速创建设置体验期间创建。

路由配置。

根据下表所述更新路由配置。

选项 配置
域部分
您之前在设置自定义域名时使用的域名。
要匹配的模式 设置为 /*(默认值);在我们的设置中,所有站点请求都将发送到同一个源。
接受的协议 设置为仅 HTTPS 可确保提供的所有流量都是安全的。
重定向 选中重定向所有流量以使用 HTTPS 复选框。
源组部分
源组 设置为您之前定义的源组。
源路径 保留为空。
转发协议 设置为仅 HTTPS匹配传入请求
缓存部分
缓存 如果要使用边缘缓存,则选中启用缓存复选框。
查询字符串缓存行为 选择使用查询字符串可确保可以提供基于查询字符串的动态内容。
压缩 选择启用压缩可以优化内容传送。

设置规则集

规则集管理如何缓存内容。 此步骤很重要,因为它管理边缘服务器如何缓存内容以改进站点的扩展。 但是,错误配置的规则集可能会导致缓存应该专门为每个用户提供的动态内容。

要正确设置规则集,了解站点提供的内容类型非常重要。 了解此信息可帮助您使用有效的规则来配置规则集。 对于本文中的场景,站点在所有页面上都使用动态内容,并且还提供静态文件;这表明站点在尝试实现:

  • 所有静态文件都被缓存并从边缘服务器提供。
  • 不会缓存任何页面内容。

配置此规则集

  1. 在左侧窗格中,选择规则集,然后选择添加规则集

    配置规则集。

  2. 输入规则集名称,然后保存。

    创建新规则集。

现在,让我们根据业务要求,并使用满足前面所提场景的要求的以下配置来配置规则集。

要求:所有静态文件都被缓存并从边缘服务器提供

此场景中的站点可以包含文件扩展名为 .css、.png、.jpg、.js、.svg、.woff 或 .ico 的静态文件。 因此,我们需要一个规则来评估请求的文件名扩展并检查特定文件类型。

备注

还有其他方法可以编写此规则,如使用请求 URL 或文件名。 有关 Azure Front Door 规则匹配条件的详细信息,请转到 Azure Front Door 规则引擎匹配条件

请求文件扩展条件示例。

名为“请求文件扩展”的 IF 条件的屏幕截图,其中 Operator 设置为 Equal,Value 设置为 css png jpg js svg woff ico,Case 转换设置为无转换。

在以下操作配置中,您将替代 Power Pages 设置的缓存标头,让这些文件在浏览器上缓存的时间稍长一些。 默认情况下,Power Pages 将缓存有效期设置为一天。 但在这种情况下,我们将覆盖它并将其设置为 7 天,方法是设置缓存过期操作并将缓存行为设置为替代,如下图所示。

缓存到期操作示例。

最后,完整的规则如下图所示。

最终文件扩展规则。

要求:不会缓存任何页面内容

通常,Power Pages 站点设置确保如果页面中嵌入了窗体(这意味着它提供特定于记录的内容),它会将其 Cache-control 标头值设置为专用,这可确保 Azure Front Door 不会缓存该请求。 但是,此方法没有考虑使用 Liquid 模板在页面上嵌入用户特定内容的场景,如向一组用户显示特定记录。 因此,我们将添加一个明确规则来确保没有网站页面被缓存。

第一步是设置条件。 条件对我们在第一个规则中执行的操作进行反向检查,并检查请求是否包含指向我们要缓存的其中一个文件类型的文件名扩展。

Not equal 请求文件扩展条件示例。

名为“请求文件扩展”的 IF 条件的屏幕截图,其中 Operator 设置为 Not equal,Value 设置为 css png jpg js svg woff ico,Case 转换设置为无转换。

在操作条件中,与之前的规则类似,我们将为缓存到期编写一个操作。 不过,这一次,我们将行为设置为绕过缓存。 这将确保满足此规则的任何请求都不会被缓存。

缓存到期配置。

完整的规则如下图所示。

页面内容缓存的完整规则。

将规则集与路由关联

创建规则集后,下一步是将其与路由关联。

  1. 选择规则集,然后在命令栏中选择关联路由

    选择以关联规则集上的路由。

  2. 选择终结点名称和可用路由。 可能有多个可用路由,请选择您之前配置的路由。

    关联路由

  3. 如果您有多个规则集并且想要定义它们的评估顺序,请选择更改规则集顺序并配置顺序。 我们的示例场景只有一个规则集。

    更改规则集的顺序。

  4. 选择完成完成操作。

验证规则和路由配置

要验证规则和路由配置是否正常工作,请确保所有流量都是通过 HTTPS 提供,并且正确评估缓存规则。

确保所有流量都是通过 HTTPS 提供,并且所有 HTTP 调用都重定向到 HTTPS

  • 在浏览器中输入域名,并确保在呈现内容时 URL 自动更改为 HTTPS。

确保缓存规则被评估并按预期工作

要检查缓存规则,我们需要在 Web 浏览器的开发人员工具栏中分析网络跟踪,以验证是否正确设置了不同内容类型的缓存标头。

备注

规则更改最多可能需要 10 分钟反映出来。

  1. 打开一个新的浏览器选项卡,打开开发人员工具栏,然后浏览到 Power Pages 站点 URL(确保在浏览到 URL 之前打开开发人员工具栏)。

  2. 转到网络选项卡查看所有网络请求。

  3. 从请求列表中选择任意 CSS 文件的请求。

    在请求详细信息的响应标头部分,确保存在名为 x-cache 的标头。 此标头确保请求通过边缘服务器提供并且可以缓存。 如果 x-cache 的值设置为 CONFIG_NOCACHE 或任何其他包含术语 NOCACHE 的值,设置将不正确。

    包含缓存命中值的名为 x-cache 的响应头。

  4. 与上一步类似,选择页面请求并检查其标头。 如果 x-cache 设置为 CONFIG_NOCACHE,表明您的设置在正常工作。

    包含页面的 CONFIG_NOCACHE 值的名为 x-cache 的响应头。

设置 WAF 规则来分析传入请求

设置的下一步是在传入请求上配置 WAF 规则。 本文中,我们只介绍基本步骤。 有关高级 WAF 配置,请转到 Azure Front Door 上的 Azure Web 应用程序防火墙

  1. 在左侧窗格上,选择安全

    Azure Front Door 配置的安全选项卡。

    在快速创建设置期间,我们已经设置了显示在此处的新 WAF 策略。 不过,如果您跳过了该步骤,可以通过选择新建来设置新策略。

  2. 选择 WAF 策略的名称。

  3. 选择策略设置,然后:

    1. 启用请求正文检查:如果您希望除 Cookie、标头和 URL 外还检查请求正文,请选中此复选框。

    2. 重定向 URL:输入一个非站点 URL。 如果 WAF 规则设置为重定向,此 URL 将是重定向用户的位置。 确保可以公开和匿名访问此 URL。

    3. 阻止请求状态代码:如果请求被 WAF 阻止,此 HTTP 状态代码将返回给用户。

    4. 阻止响应正文:您可以在此处添加自定义消息,如果请求被 WAF 阻止,该消息将显示给用户。

    WAF 的策略设置。

  4. 要配置评估每个请求所依据的规则集,请执行以下操作:

    1. 在左侧窗格上,选择托管规则

      托管规则 - 规则集

    2. 在命令栏上,选择分配,然后从默认规则集列表中进行选择。 托管规则集由 Microsoft 管理并定期更新。 有关规则集的详细信息,请转到 Web 应用程序防火墙 DRS 规则组和规则

      管理规则集 - 分配

分配托管规则集后,您的设置就完成了。 作为一个额外步骤,您还可以考虑为现有规则设置排除列表并启用自定义规则。

重要提示

默认情况下,WAF 设置为检测策略模式,这将根据定义的规则集检测问题并记录它们。 但是,此模式不会阻止请求。 要阻止请求,必须将 WAF 切换到预防模式。

我们建议您在预防模式下执行全面测试,以验证所有场景都正常运行,并确保您不必调整规则集或添加排除策略。 只有在确认整个设置按预期工作后,才应启用预防模式。

将 Power Pages 设置为仅接受来自 Azure Front Door 的流量

此设置的最后一步是确保您的 Power Pages 站点仅接受来自 Azure Front Door 的流量。 对于此验证,我们需要在站点上启用 IP 地址限制

要查找 Azure Front Door 运行的 IP 地址范围,请转到如何将我的后端访问权限锁定为只能访问 Azure Front Door?

备注

Power Pages 不支持基于 X-Azure-FDID 的筛选。

增加源响应时间

默认情况下,Azure Front Door 的源响应超时为 60 秒。 但是,我们建议将其增加到 240 秒,以确保文件上载或导出到 Excel 等长时间运行的场景能够按预期运行。

  1. 在左侧窗格上,选择终结点管理器

    选择终结点管理器。

  2. 选择编辑终结点

    选择编辑终结点。

  3. 在右上角,选择终结点属性

  4. 将源响应时间更改为 240 秒,然后选择更新

    将终结点源响应时间设置为 240 秒。

另请参阅

什么是 Azure Front Door?
快速入门:创建 Azure Front Door 配置文件 - Azure 门户
使用 Azure 门户在 Azure Front Door 标准/高级 SKU 上创建自定义域
如何将我的后端访问权限锁定为仅访问 Azure Front Door?
Azure Front Door 规则引擎匹配条件