You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Azure应用网关重写功能实现可脚本启停的多场景维护页

基于Azure应用网关重写规则实现多场景可控维护页重定向

要实现需求,你可以通过Azure应用网关的重写规则集配置路径匹配的重定向规则,再用Azure CLI/PowerShell脚本控制规则的启用/禁用,全程无需手动操作门户。

步骤1:准备维护页

提前部署静态维护页(比如用Azure存储静态网站、自有静态托管服务),记录维护页的完整URL(例如https://your-maintenance-host.com/maintenance.html)。

步骤2:配置应用网关重写规则集

创建重写规则集

  1. 进入目标应用网关的Azure门户页面,左侧菜单选择「重写」>「规则集」>「添加」,为规则集命名(例如MaintenanceRewriteSet)。
  2. 点击「添加规则」,开始配置3个场景的独立重定向规则。

配置单场景重定向规则(以场景1为例)

每个场景规则仅路径匹配条件不同,其余配置逻辑一致:

  • 规则名称:比如Maintenance-Rule-App1(对应场景1路径/app1/*)
  • 优先级:设置为低于业务规则的数值(数值越小优先级越高,确保维护规则优先触发)
  • 匹配条件:
    • 类型选「路径」,匹配类型选「前缀匹配」,路径值填对应场景的路径(如/app1/)
    • 可选:添加开关匹配条件(比如请求头X-Maintenance-Enable等于true,用于更精细的流量控制)
  • 操作:
    • 类型选「重定向」,重定向类型选「已找到(302)」(临时重定向,避免浏览器缓存)
    • 目标URL填入维护页完整地址
    • 按需勾选「保留路径」「保留查询字符串」(不需要原路径信息可取消)

重复上述步骤,分别创建场景2(如路径/app2/*)、场景3(如路径/admin/*)的重定向规则,完成后将规则集关联到目标路由/监听规则。

步骤3:脚本启停维护机制

使用Azure CLI或PowerShell脚本,实现对规则集或单个场景规则的启用/禁用控制:

Azure CLI 控制规则集启停

# 启用整个维护规则集
az network application-gateway rewrite-rule set update \
  --resource-group your-resource-group \
  --gateway-name your-app-gateway \
  --name MaintenanceRewriteSet \
  --enabled true

# 禁用整个维护规则集
az network application-gateway rewrite-rule set update \
  --resource-group your-resource-group \
  --gateway-name your-app-gateway \
  --name MaintenanceRewriteSet \
  --enabled false

Azure CLI 控制单个场景规则启停

如果需要单独启停某场景的维护(比如仅启用场景1):

# 启用场景1的重写规则
az network application-gateway rewrite-rule update \
  --resource-group your-resource-group \
  --gateway-name your-app-gateway \
  --rule-set-name MaintenanceRewriteSet \
  --name Maintenance-Rule-App1 \
  --enabled true

# 禁用场景1的重写规则
az network application-gateway rewrite-rule update \
  --resource-group your-resource-group \
  --gateway-name your-app-gateway \
  --rule-set-name MaintenanceRewriteSet \
  --name Maintenance-Rule-App1 \
  --enabled false

PowerShell 控制规则状态

# 连接Azure账户
Connect-AzAccount

# 获取目标应用网关
$appGw = Get-AzApplicationGateway -Name "your-app-gateway" -ResourceGroupName "your-resource-group"

# 启用整个维护规则集
$ruleSet = $appGw.RewriteRuleSets | Where-Object { $_.Name -eq "MaintenanceRewriteSet" }
$ruleSet.Enabled = $true
Set-AzApplicationGateway -ApplicationGateway $appGw

# 禁用单个场景规则
$targetRule = $ruleSet.RewriteRules | Where-Object { $_.Name -eq "Maintenance-Rule-App1" }
$targetRule.Enabled = $false
Set-AzApplicationGateway -ApplicationGateway $appGw

注意事项

  • 确保维护规则的优先级高于业务规则,避免被覆盖。
  • 优先使用302临时重定向,维护结束后用户访问会自动恢复正常,无需清理浏览器缓存。
  • 测试阶段可添加IP匹配条件,仅让内部测试IP触发重定向,避免影响正常访客。

内容的提问来源于stack exchange,提问作者balaganesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:47:36