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

如何配置Azure Web Apps基于路径的URL重定向(保留根域名)

配置Azure Web Apps实现同域名路径分流

要实现www.example.com指向app1、www.example.com/app2指向app2且域名保持不变,有两种实用方案,根据你的场景选择:

方案一:使用Azure Front Door(推荐,适合生产环境)

这是Azure官方推荐的多应用路由方案,支持高可用、负载均衡和缓存:

  1. 创建Front Door实例

    • 登录Azure门户,搜索并创建「Front Door和CDN配置文件」
    • 添加前端主机:输入www.example.com,按照提示完成域名验证(添加DNS TXT记录,和之前给app1配置域名的流程一致)
  2. 配置后端池

    • 在Front Door的「后端池」页面,添加两个后端:
      • 后端1:指向app1的默认域名(如app1.azurewebsites.net),设置优先级为1
      • 后端2:指向app2的默认域名(如app2.azurewebsites.net),设置优先级为1
    • 确保后端的健康检查正常(默认配置即可)
  3. 配置路由规则

    • 创建第一条路由规则:
      • 路径匹配:/*
      • 后端池选择app1的后端池
      • 接受HTTP/HTTPS协议,启用HTTPS重定向
    • 创建第二条路由规则(优先级高于第一条):
      • 路径匹配:/app2/*
      • 后端池选择app2的后端池
      • 开启「路径重写」,设置为/{R:1}(将/app2/xxx转发到app2的/xxx)
  4. 更新DNS解析

    • 将www.example.com的DNS记录从原来指向app1的IP/CNAME,修改为指向Front Door提供的前端域名(或IP)

方案二:在app1中配置反向代理(轻量方案,无需额外服务)

如果不想新增Front Door服务,可以在app1中通过反向代理将/app2路径的请求转发到app2:

针对ASP.NET/ASP.NET Core应用

  1. 登录Azure门户,进入app1的「配置」>「常规设置」,开启「反向代理」开关
  2. 修改app1根目录下的web.config,添加重写规则:
    <configuration>
      <system.webServer>
        <rewrite>
          <rules>
            <rule name="Forward to app2" stopProcessing="true">
              <match url="^app2/(.*)" />
              <action type="Rewrite" url="https://app2.azurewebsites.net/{R:1}" />
              <serverVariables>
                <set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
                <set name="HTTP_ACCEPT_ENCODING" value="" />
              </serverVariables>
            </rule>
          </rules>
          <outboundRules>
            <rule name="Restore Accept Encoding">
              <match serverVariable="HTTP_ACCEPT_ENCODING" pattern="^$" />
              <action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" />
            </rule>
          </outboundRules>
        </rewrite>
      </system.webServer>
    </configuration>
    

针对Node.js应用

  1. 安装http-proxy-middleware依赖:

    npm install http-proxy-middleware --save
    
  2. 在app的入口文件(如app.js)中添加代理配置:

    const express = require('express');
    const { createProxyMiddleware } = require('http-proxy-middleware');
    const app = express();
    
    // 代理/app2路径到app2
    app.use('/app2', createProxyMiddleware({
      target: 'https://app2.azurewebsites.net',
      changeOrigin: true,
      pathRewrite: { '^/app2': '' },
      secure: true
    }));
    
    // 保留app1自身的路由
    app.get('/', (req, res) => {
      res.send('app1 homepage');
    });
    
    app.listen(process.env.PORT || 3000);
    
  3. 测试与注意事项

    • 访问www.example.com/app2验证是否正常转发,地址栏域名保持不变
    • 确保app2没有IP限制,允许来自app1的请求
    • 若使用HTTPS,需确保app1和app2都配置了有效的SSL证书

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:13:01