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

如何在单个Azure App Service中为Node.js Web API配置多虚拟路径?

同一Azure App Service下新增Node.js API虚拟路径的实现方案

可行性说明

完全可行,Azure App Service支持通过虚拟应用程序配置,将不同虚拟路径映射到应用内的物理路径,配合Node.js路由或web.config的URL重写规则,就能实现同一服务下多路径访问API。

具体实现步骤

1. 配置虚拟应用程序

登录Azure门户进入你的App Service:

  • 左侧导航栏选择配置 > 路径映射
  • 在虚拟应用程序和目录区域点击添加:
    • 虚拟路径:填写/nodeapi
    • 物理路径:若API代码在根目录,填site\wwwroot;若存放在子目录,填对应路径(如site\wwwroot\nodeapi)
    • 必须勾选应用程序(否则仅作为静态文件映射)
  • 保存配置

2. 修改web.config适配虚拟路径

由于Node.js在IIS上通过iisnode运行,需调整URL重写规则,将/nodeapi下的请求转发到Node.js入口文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!-- 保留根路径原有规则 -->
        <rule name="NodeRoot" stopProcessing="true">
          <match url="^(?!nodeapi).*$" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.js" />
        </rule>
        <!-- 新增nodeapi路径规则 -->
        <rule name="NodeAPI" stopProcessing="true">
          <match url="^nodeapi/(.*)$" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.js/{R:1}" />
        </rule>
      </rules>
    </rewrite>
    <iisnode nodeProcessCommandLine="node.exe" />
  </system.webServer>
</configuration>

3. 调整Node.js API的路由逻辑

如果使用Express等框架,需添加/nodeapi前缀的路由,确保请求能正确匹配:

const express = require('express');
const app = express();

// 根路径原有路由
app.get('/', (req, res) => {
  res.send('根路径API响应');
});

// 直接添加nodeapi前缀路由
app.get('/nodeapi', (req, res) => {
  res.send('nodeapi路径API响应');
});

// 或使用路由分组管理子路径
const apiRouter = express.Router();
apiRouter.get('/', (req, res) => {
  res.send('nodeapi分组根响应');
});
apiRouter.get('/users', (req, res) => {
  res.send('nodeapi用户列表');
});
app.use('/nodeapi', apiRouter);

app.listen(process.env.PORT || 3000, () => {
  console.log('服务已启动');
});

4. 验证配置

将修改后的web.config和代码部署到App Service,访问https://<app_service>.azurewebsites.net/nodeapi及对应的子路径,确认能正常返回API响应即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:18:24