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

如何在Windows IIS服务器部署NestJS应用?已完成npm build生成dist文件并配置web.config寻求协助

完成NestJS在IIS上的部署指南

嘿,你已经搞定了构建dist文件和初始web.config配置这两步,接下来咱们把剩下的部署环节捋清楚,确保你的NestJS应用在IIS上稳稳运行:

1. 确认必备IIS模块已安装

你的web.config里用到了iisnode和URL Rewrite功能,这两个是IIS运行Node.js应用的核心模块,必须先确保它们已经安装:

  • iisnode模块:要匹配你服务器上的Node.js版本(x86/x64),安装后在IIS的模块列表里能看到它
  • URL Rewrite模块:微软官方的IIS重写工具,没有它的话你的路由转发规则会完全失效

2. 核对文件路径与入口配置

  • 检查web.config里的<add name="iisnode" path="main.js" ... />:确保main.js的路径和你的实际文件结构一致。比如如果你的IIS应用物理路径指向的是项目根目录,那这里要写成path="dist/main.js";如果物理路径直接指向dist文件夹,那main.js的写法就没问题
  • 确认项目根目录的package.json里,生产环境启动脚本指向正确的入口:
    "scripts": {
      "start:prod": "node dist/main.js"
    }
    

3. 配置IIS应用池

这一步很容易踩坑,一定要注意:

  • 找到你的IIS应用对应的应用池,把**.NET CLR版本设置为无托管代码**(因为咱们跑的是Node.js,不需要.NET运行时)
  • 调整应用池身份:如果你的应用需要访问本地文件、数据库等资源,先可以暂时设置为LocalSystem测试(权限足够),后续再换成更安全的ApplicationPoolIdentity,并给它分配对应文件夹的读写权限

4. 先本地验证应用可启动

在服务器的命令行里,先手动启动应用排除代码问题:

  • 进入对应目录(比如dist文件夹或项目根目录),运行node main.js(或node dist/main.js)
  • 确认控制台没有报错,应用能正常启动并监听端口,然后再去操作IIS

5. 优化web.config(可选但实用)

你的基础配置没问题,这里可以加一些实用配置:

  • 如果有静态资源(比如public文件夹),添加静态文件优先处理的规则,放在现有rewrite规则前面:
    <rule name="Static Files" stopProcessing="true">
      <match url="^public/.*$" />
      <action type="None" />
    </rule>
    
  • 给iisnode指定Node.js路径(避免服务器多Node版本冲突),添加日志配置:
    <iisnode nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" loggingEnabled="true" logDirectory="iisnode" />
    
    把这段代码加入到<system.webServer>标签内即可

6. 权限检查

  • 确保IIS应用池的身份拥有对dist、node_modules文件夹的读取权限;如果应用需要写入文件(比如日志、上传文件),还要分配写入权限
  • 不需要额外开放NestJS应用监听的端口(比如3000),因为iisnode是反向代理,外部请求通过IIS的80/443端口转发到内部Node进程

如果部署后遇到报错,可以去iisnode文件夹查看日志(你已经把它设为隐藏段,直接访问不到,但可以在服务器本地打开这个文件夹),日志里会有详细的错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 12:29:07