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

将NextJS网站部署至IIS服务器的问题求助

Next.js 部署到 IIS 服务器问题排查与解决方案

一、反向代理配置修正

如果反向代理未生效,检查你的web.config是否包含正确的重写规则和IIS Node配置,以下是标准配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="NextJS Reverse Proxy" stopProcessing="true">
          <match url="^(.*)$" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="http://localhost:3000/{R:1}" />
        </rule>
      </rules>
    </rewrite>
    <handlers>
      <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
    </handlers>
    <iisnode node_env="production" />
  </system.webServer>
</configuration>
  • 确认Next.js项目在服务器上通过next start运行在3000端口(或你指定的端口)
  • 检查IIS站点的绑定域名/端口是否与反向代理规则中的目标地址匹配
  • 确保服务器防火墙允许对应端口的入站请求

二、自定义服务器运行卡住问题排查

执行node server.js后仅输出SWC提示就停止,通常是以下原因:

  1. 依赖未完整安装:
    复制文件到服务器后,务必在项目根目录执行npm install --production(仅安装生产依赖),避免缺失依赖导致启动失败。
  2. server.js配置问题:
    检查自定义服务器代码是否正确监听端口,且包含错误捕获逻辑,示例:
    const { createServer } = require('http')
    const { parse } = require('url')
    const next = require('next')
    
    const dev = false
    const app = next({ dev })
    const handle = app.getRequestHandler()
    
    app.prepare().then(() => {
      createServer((req, res) => {
        const parsedUrl = parse(req.url, true)
        handle(req, res, parsedUrl)
      }).listen(3000, (err) => {
        if (err) throw err
        console.log('> Ready on http://localhost:3000')
      })
    }).catch(err => {
      console.error('Error starting server:', err)
    })
    
    增加错误捕获后,启动时会输出具体错误信息,便于定位问题。
  3. 端口占用:
    执行netstat -ano | findstr :3000检查指定端口是否被其他进程占用,若占用则更换端口。

三、跨机器部署最佳实践

不需要将全部源码复制到生产服务器,正确的部署流程是:

  1. 在开发机执行next build生成.next文件夹
  2. 复制以下文件/文件夹到生产服务器:
    • .next
    • package.json、package-lock.json(或yarn.lock)
    • public(如果有静态资源)
    • 自定义服务器的server.js(如果使用)
    • web.config
  3. 在生产服务器项目根目录执行npm install --production安装依赖
  4. 启动项目:
    • 默认服务器:next start -p 3000
    • 自定义服务器:node server.js
  5. 配置IIS的反向代理或直接通过IIS Node托管(需确保web.config中handlers指向正确的入口文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:50:35