如何在Azure Application Gateway后端网站显示“维护中”页面?
解决Azure Application Gateway后网站维护页显示问题的方案
我之前处理过不少类似的场景,确实直接在后端站点放置App_offline.htm不会生效——因为Application Gateway会优先执行健康检查,一旦判定后端实例不健康,就直接返回502错误,不会将请求转发到后端的静态页面。下面是几个经过验证的可行方案:
方案1:配置Application Gateway自定义502错误页面
- 准备好你的“维护中”静态页面(包含HTML、CSS、图片等资源),将其打包成ZIP文件,上传到Azure存储账户的Blob容器中(记得将容器设置为
匿名读取权限,或者生成有效的SAS URL确保网关能访问) - 登录Azure门户,找到你的Application Gateway,进入错误页面选项卡,点击“添加自定义错误页面”
- 在配置中选择
HTTP 502状态码,然后选择“存储Blob”作为错误页面来源,填写你上传的ZIP文件的Blob URL - 调整后端健康检查规则:将健康检查的路径修改为一个必然返回失败的地址(比如
/maintenance-mode),这样网关会判定后端实例不健康,自动触发自定义的502错误页面,也就是你的维护页 - 维护结束后,记得将健康检查路径改回正常的检测地址(比如
/或者你的健康检查接口),同时可以保留自定义错误页面作为备用
方案2:切换后端池到静态维护站点
- 提前在Azure上部署一个专门的静态维护站点:可以选择Azure Static Web Apps,或者直接用Azure存储账户的静态网站功能,上传你的维护页面资源
- 当需要进入维护模式时,打开Application Gateway的后端池设置,将当前使用的后端池替换为这个静态维护站点的后端池(如果是存储静态网站,后端池类型选择“IP地址或FQDN”,填写静态网站的FQDN)
- 这种方式的优势是用户看到的是正常的200状态码的维护页,不会出现502的错误标识,体验更友好
- 维护完成后,切换回原来的业务站点后端池即可
方案3:利用Azure Functions实现动态路由(适合自动化场景)
- 创建一个简单的Azure Functions(比如HTTP触发的函数),在函数代码中直接返回你的维护页面HTML内容
- 在Application Gateway中添加一条优先级最高的路由规则,将所有请求路由到这个Azure Functions的终结点
- 如果需要自动化触发,可以结合Azure Monitor的警报规则:当后端实例的健康状态变为“不健康”时,自动触发Azure Logic Apps或者Azure Automation,修改Application Gateway的路由规则指向Functions
- 这个方案适合需要自动响应后端故障或者定时维护的场景
额外注意事项
- 无论采用哪种方案,建议提前在测试环境中验证流程,确保切换维护模式和恢复模式的过程顺畅
- 如果使用自定义错误页面,要确保维护页面的所有外部资源(比如图片、CSS)都能被公开访问,避免出现样式丢失的情况
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

