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

Node.js部署IIS:端口监听与默认文件配置问题求助

解决方案

核心思路

通过URL重写规则的条件判断,让IIS优先处理存在的静态文件,仅将不存在的请求反向代理到Node.js服务(3000端口),同时在Express中配置根路由作为默认页面,避免IIS直接返回app.js源码。


步骤1:修正IIS默认文档配置

  1. 打开IIS管理器,定位到你的站点,双击「默认文档」
  2. 移除列表中的app.js(避免IIS直接把它当作纯文本文件返回)
  3. 保留或添加常规静态默认文档(如index.html),后续由Express处理根路径的默认请求

步骤2:配置URL重写反向代理规则

  1. 打开站点的「URL重写」模块,点击「添加规则」→ 选择「反向代理」
  2. 目标地址填写http://localhost:3000,按需选择是否开启「启用SSL卸载」,点击确定
  3. 编辑刚创建的反向代理规则,切换到「条件」标签,添加两个条件:
    • 第一个条件:
      • 条件输入:{REQUEST_FILENAME}
      • 检查输入字符串是否:不是文件
      • 逻辑分组:匹配所有条件
    • 第二个条件:
      • 条件输入:{REQUEST_FILENAME}
      • 检查输入字符串是否:不是目录
  4. 保存规则

步骤3:确保Express根路由配置正确

在你的app.js中添加根路径处理,作为站点的默认页面:

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

// 根路由:访问域名/localhost时返回默认内容
app.get('/', (req, res) => {
  // 可返回纯文本、HTML字符串,或渲染本地HTML文件
  res.send('<h1>Welcome to my site!</h1>');
  // 若返回本地文件,用:res.sendFile(__dirname + '/public/index.html');
});

// 其他业务路由示例
app.get('/api', (req, res) => {
  res.json({ status: 'ok', message: 'Node.js service works' });
});

app.listen(3000, () => {
  console.log('Node.js server running on port 3000');
});

效果验证

  • 访问www.mydomain.com或localhost:触发Express根路由,返回配置的默认页面(而非app.js源码)
  • 访问www.mydomain.com/about.html(若该静态文件存在于IIS站点目录):IIS直接返回静态文件
  • 访问www.mydomain.com/api:请求被转发到3000端口,由Express处理返回对应内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:48:24