我有一个使用 Angular 8 和 Asp.net Core Web API 开发的 SaaS Web 应用程序。我已将 web api 部署到 azure web 应用程序,并将 angular 前端 web 应用程序部署到另一个 azure web 应用程序。
用户来自中国和澳大利亚等国家。我想要区域负载平衡,就像中国用户在 china azure 区域使用 web 应用程序,澳大利亚用户使用澳大利亚 azure 区域 web 应用程序一样,以便它具有最佳性能。Azure SQL DB 将位于一处(在澳大利亚)。
此外,我想防止对 Web 前端应用程序和 Web api 的攻击,例如 d-dos、Web 抓取和 SQL 注入。对于网页抓取,我想从一个 ip 添加访问速率限制。
你能告诉我应该使用什么服务吗?我在博客上看到了关于 azure 应用程序网关、azure 负载均衡器、azure 前门和 azure 流量管理器的内容。这对我来说有点混乱。我需要一个基于我这个真实世界场景的最佳实践。我应该使用其中一项服务还是应该使用多项服务?
azure-web-app-service azure-application-gateway azure-load-balancer azure-front-door
我有一个使用 Azure 存储帐户(blob 存储)设置的静态网站。我想使用 Azure Front Doors 来处理 url 重写,因为它是 SPA,并且始终需要路由到后端的 index.html。我已经使用设计师设置了前门。它有一个前端(使用 azurefd.net 域上的子域)、一个后端(指向我的后端 Blob 存储帐户并具有匹配的主机标头)和一个基本上都是默认值的规则。我将其设置为“匹配 HTTP 与 HTTPS 的请求”。
如何为 Azure 中的静态存储站点正确配置前门?
有没有人使用 Azure Front Door 成功完成滚动更新?我们在 2 个区域有一个应用程序,我们希望在更新时禁用区域 1 中的后端,区域 2 中的后端也是如此。但是,在您禁用或删除一个应用程序之间似乎有一段荒谬的延迟时间来自池的后端,这基本上是不可能的。
我们尝试过:
我有一个在部署过程中监视的端点,它告诉我它位于哪个区域,并且在操作期间它永远不会更改,并且在更新区域时变得不可用。一定有办法做到这一点,对吧?
我想部署一个 Azure Front Door,其自定义 RuleEngine 与其中一个 RoutingRules 关联。
整个问题是RulesEngine必须和RoutingRule关联,RoutingRule只能在创建Front Door时创建,而RulesEngine也需要Front Door才能创建。
https://docs.microsoft.com/en-us/azure/templates/microsoft.network/2020-05-01/frontdoors
之后我尝试创建一个 Microsoft.Network/frontDoors/routingRules 类型的独立资源,但我遇到了资源类型无效的错误。
我是否遗漏了什么,或者这在单个 ARM 部署中是不可能实现的?
我想创建一个具有自定义主机名绑定和托管 SSL 证书的 Azure 应用服务。
当我创建单个 Bicep 模板时,只有在已创建主机名绑定的情况下才能部署证书资源。但要创建主机名绑定,我需要证书指纹。
更新同一模板中的主机名绑定也是不可能的,因为资源在模板中只能存在一次。
// hostname bindings must be deployed one by one to prevent Conflict (HTTP 429) errors.
@batchSize(1)
resource customHostnameWithoutSsl 'Microsoft.web/sites/hostnameBindings@2019-08-01' = [for fqdn in customHostnames: {
name: '${webAppService.name}/${fqdn}'
properties: {
siteName: webAppService.name
hostNameType: 'Verified'
sslState: 'Disabled'
}
}]
// Managed certificates can only be created once the hostname is added to the web app.
resource certificates 'Microsoft.Web/certificates@2022-03-01' = [for (fqdn, i) in customHostnames: {
name: '${fqdn}-${webAppName}'
location: location
properties: {
serverFarmId: appServicePlanResourceId …Run Code Online (Sandbox Code Playgroud) 我们使用 Azure Front Door 为我们的白标静态网站提供服务,这意味着我们需要我们的客户能够通过独特的子域(例如cust1.domain.com和cust2.domain.com)访问它。
我们*.domain.com通过 DNS 对 Front Door 实例进行 CNAME,映射路由*.domain.com并将其绑定到自定义*.domain.com通配符证书(未托管,不受支持)。该路由指向一个源组,该组又指向类似于 的“存储(静态网站)”源prod-storage.z14.web.core.windows.net。
有时在 Safari 上,我们会收到如下所示的响应:
<h2>Our services aren't available right now</h2><p>We're working to restore all services as soon as possible. Please check back soon.</p>0a1LIYwAAAADIYjiE3LgzTLfw86bqHEd5Q0hHRURHRTE2MTAAYTk0OGVmNjEtMTk3NS00ZjA0LTkwMjgtOTgwY2I4YzllYzFl
Run Code Online (Sandbox Code Playgroud)
在查看网络选项卡时,我们看到响应实际上是一个421 Misdirected Request. 我的假设是它与此更新有关: https: //learn.microsoft.com/en-us/azure/frontdoor/front-door-faq#how-does-front-door-handle--domain-fronting - 行为 -
设置此流程以避免 Front Door 出现此新问题的正确方法是什么?据我所知,我们的案例有些独特,并且没有记录。
我见过的解决方案包括关闭 HTTP/2、为每个域创建单独的证书以及使用不同的 IP - 这些解决方案都无效,也不会随我们的解决方案扩展,因为我们需要不受限制地动态创建新的子域(即,以编程方式将它们添加到 AFD 是不现实的)。
wildcard-subdomain azure http-status-code-421 azure-front-door azure-static-website-hosting
我有一个 Azure 资源组,其中两个应用服务 Web 应用程序部署在不同的位置并按预期工作。我也有一个 Front Door 配置设置。通过azurefd.net地址访问时,这是按预期响应的。
我想向此配置添加自定义域。首先,我CNAME在我的 DNS 中创建了一个www地址。
然后我添加了一个简单的自定义域配置(通过 ARM 模板),将完全限定的自定义域名作为参数传递。
通过模板部署时,前端部分如下所示:
"frontendEndpoints": [
{
"name": "frontendEndpoint1",
"properties": {
"hostName": "[concat(parameters('frontDoorName'), '.azurefd.net')]",
"sessionAffinityEnabledState": "Enabled",
"sessionAffinityTtlSeconds": 0
}
},
{
"name": "frontendEndpoint2",
"properties": {
"hostName": "[parameters('customDomainName')]",
"sessionAffinityEnabledState": "Enabled",
"sessionAffinityTtlSeconds": 0
}
}
],
Run Code Online (Sandbox Code Playgroud)
前端按预期部署,我仍然可以访问该azurefd.net地址。
但是,当我尝试访问该www地址时,我在浏览器中收到一条错误消息:
我们的服务目前不可用。我们正在努力尽快恢复所有服务。请尽快回来查看。0tEdHXAAAAAADUxvBayGtQLDTjRthnz9XTE9OMjFFREdFMDMyMQBFZGdl
我已经等了半个多小时才能推出任何 DNS 更改,但它仍然不起作用。
可能是什么问题?排除此类错误的简单方法是什么?需要明确的是,我还没有在这个配置中添加任何 HTTPS 证书。Web 应用程序确实响应 HTTP 和 HTTPS,所以希望这不是问题。
我已在应用程序网关的前面部署了 Azure Front Door。现在,我想通过 Front Door 路由所有流量,并限制对应用程序网关的公共 IP 地址的直接访问。怎么做?
我们在 2 个不同地理区域(日本东部和西部)的 Azure 服务结构集群上托管 Web API 应用程序及其相关支持后台服务,以应对 Azure 区域中断。它们是主动-被动高可用性集群。
预期传入流量仅为 HTTPS。
我们的应用程序的流量仅来自特定国家(日本),而不是来自世界各地。
将流量管理器或 Azure 前门放在这些多区域设置的前面更好吗?停电期间哪一种故障转移速度快?什么时候选择哪一个?优点缺点?
浏览了文件,上述问题没有具体答案。
high-availability azure azure-traffic-manager azure-service-fabric azure-front-door
如果终结点的域仍使用 CNAME 记录指向前门,则 Azure 前门不允许删除前端终结点。即使只有验证域 (afdverify),情况也是如此。
409 冲突
无法删除前端终结点“www.example.com”,因为它仍然直接或间接(使用“afdverify”前缀)CNAME 到前门“example.azurefd.net”。请删除 DNS CNAME 记录并重试。
虽然我讨厌无法删除这样的前端,但有一种方法可以解决这个问题,即使 Front Door 所有者无法更改 DNS 区域 - 只是不要将前端端点分配给任何路由规则并且别介意;它只消耗了开发人员的一点注意力,这使得它在某种程度上可以忍受。
问题在于这样的前端甚至阻止了整个前门的删除,这反过来又阻止了整个资源组的删除。
为什么这是一个问题?假设单个订阅由整个开发团队共享,并且有人创建了一个 Front Door 实例进行实验,使用自己的域,然后离开了团队。现在,资源会消耗金钱,因为默认前端端点必须至少有一个路由规则,并且路由规则按时间单位付费,并且没有明显的方法可以摆脱它。
除了联系 Microsoft 支持人员或请求域所有者删除指向 Front Door 的记录之外,还有其他方法可以删除此类 Front Door 实例吗?
azure-front-door ×10
azure ×8
azure-bicep ×1
azure-static-website-hosting ×1
dns ×1
security ×1