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

Azure App Service插槽可设置自定义错误页吗?无需Application Gateway方案

完全可以不使用Azure Application Gateway实现Vue SPA的维护模式,以下是适配你现有技术栈的可行方案:


1. 原生功能说明

Azure App Service 原生不支持自定义实例stopped状态的默认展示页,实例停止后请求无法抵达用户部署的服务层,只能展示Azure官方的默认停止页。但你完全可以通过不停止实例的方式实现维护模式,效果完全符合需求。

2. 最优适配方案:Express 内置维护模式中间件

这个方案适配你当前Node + Express托管SPA的技术栈,无需额外依赖Azure服务,也不需要前端每次请求判断可用性:

  • 实现逻辑:在Express所有路由的最上层添加维护模式判断中间件,通过App Service的环境变量控制开关
  • 代码示例:
const path = require('path');
// 放在所有路由、静态资源托管逻辑之前
app.use((req, res, next) => {
  // 仅当维护模式开启,且请求不是维护页面本身的静态资源时返回维护页
  if (process.env.MAINTENANCE_MODE === 'on' && !req.path.startsWith('/maintenance-static')) {
    // 返回503状态码表示临时不可用,对SEO友好
    return res.status(503).sendFile(path.join(__dirname, 'public', 'maintenance.html'));
  }
  next();
});
  • 开关方式:需要开启维护模式时,直接在Azure Portal中进入App Service「配置」页,添加/修改应用设置MAINTENANCE_MODE值为on,保存后App Service会自动热重载,10秒内即可全局生效,不需要重新部署代码。维护完成后将值改为off即可恢复服务。

该方案所有逻辑都在你的App Service实例内部运行,无第三方数据转发或缓存,完全符合医疗行业的数据隐私合规要求。


3. 零代码改动方案:专用维护插槽流量切换

如果不想修改现有服务代码,可以用Azure App Service的部署插槽功能实现:

  • 新建一个独立的部署插槽,命名为maintenance,只部署包含维护页面的静态站点(可以用极简的Express服务甚至纯静态站点配置)
  • 需要开启维护模式时,进入生产插槽的「流量分配」设置,将100%流量切换到maintenance插槽,切换操作秒级生效,不会丢失现有请求
  • 维护完成后将流量切回生产插槽即可

4. 自定义服务器错误页实现

因为你所有请求都由Express接管,不需要配置web.config,直接在Express中添加错误处理中间件即可自定义所有错误状态页:

// 404 处理
app.use((req, res) => {
  res.status(404).sendFile(path.join(__dirname, 'public', '404.html'));
});
// 全局错误处理
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).sendFile(path.join(__dirname, 'public', '500.html'));
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:06:04