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

如何在Azure应用网关更新站点时展示app_offline.htm离线提示

解决Application Gateway环境下IIS站点更新时的502错误与离线提示问题

核心问题分析

传统IIS的app_offline.htm是直接作用于站点根目录,触发IIS停止站点进程并返回该页面。但在Application Gateway(AG)架构下,AG作为前端入口无法识别IIS的app_offline.htm逻辑;同时更新文件共享中的源码时,IIS进程可能因文件锁定、重启不及时,导致AG检测到后端节点不健康,最终返回502错误。

可行解决方案

1. 正确适配IIS原生app_offline.htm机制

  • 不要将app_offline.htm放置在AG层面,而是上传到每个IIS站点对应的文件共享根目录,注意:
    • 文件名必须严格为app_offline.htm(大小写敏感,仅支持.htm后缀)
    • 文件大小需≥1KB(避免IIS忽略过小的文件)
    • 放置后IIS会立即停止对应站点的应用程序池,将该页面返回给AG,用户访问时不会出现502
  • 更新完成后,删除或重命名app_offline.htm,IIS会自动重启应用程序池恢复服务

2. 利用AG健康探测实现批量站点隔离

针对多站点场景,可通过AG健康探测临时隔离待更新站点:

  • 为每个IIS站点配置自定义健康探测路径(如/healthcheck.htm,静态页面默认返回200状态码)
  • 更新前,将对应站点的健康探测页面修改为返回503状态码,AG会自动将该站点从后端池中移除,用户访问时AG会返回预设的503离线提示(可在AG自定义错误配置中设置)
  • 更新完成后,恢复健康探测页面的200状态,AG会自动将站点重新加入后端池

3. 规避web.config配置异常

更新时出现web.config相关问题,多因权限或文件同步不完整导致:

  • 确保IIS应用程序池身份(如IIS AppPool\对应站点池名)对文件共享目录拥有读取、写入、修改权限
  • 更新时先备份原web.config,替换后用appcmd.exe list config /section:system.webServer命令验证配置语法
  • 使用文件同步工具时,需确认文件完全同步后再恢复站点,避免IIS读取不完整的配置文件引发异常

4. 优化IIS应用程序池配置

针对文件共享场景调整池设置,减少更新时的异常触发:

  • 禁用「文件更改时回收」:IIS管理器→应用程序池→高级设置→回收,取消勾选该选项(默认开启会导致更新文件时自动回收池,引发AG健康探测失败)
  • 提高「快速失败保护」阈值:避免短时间内的池异常导致AG标记站点为不健康

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:45:32