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

如何将NextJS 13.3.4部署到IIS 7/10自有服务器?

在IIS 7/10托管NextJS 13.3.4应用的完整步骤

NextJS 13.3.4的部署分两种模式,需根据你的应用是否包含SSR(服务器端渲染)或API路由选择对应方案:

情况一:纯静态导出(无SSR/API路由)

如果你的应用仅使用静态页面(无动态渲染或API接口),可采用静态导出模式,部署流程最简单:

  1. 修改项目配置
    在next.config.js中添加静态导出配置:
    /** @type {import('next').NextConfig} */
    const nextConfig = {
      output: 'export',
      // 保留你原有的其他配置
    }
    
    module.exports = nextConfig;
    
  2. 重新构建项目
    执行npm run build,此时项目根目录会生成out文件夹(替代原.next),这就是静态部署的全部文件。
  3. IIS配置
    • 打开IIS管理器,创建新网站,物理路径选择out文件夹,设置好域名、端口绑定
    • 确保IIS已安装静态内容角色(若未安装,通过「服务器管理器-添加角色和功能」勾选安装)
    • 解决单页应用刷新404问题:安装IIS官方的URL重写模块,然后在网站根目录创建web.config,添加以下规则:
      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
        <system.webServer>
          <rewrite>
            <rules>
              <rule name="NextJS Static Routes" 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="/index.html" />
              </rule>
            </rules>
          </rewrite>
        </system.webServer>
      </configuration>
      

情况二:包含SSR/API路由(需Node.js服务)

若应用依赖SSR、ISR或API路由,需通过IIS反向代理将请求转发给Node.js运行的NextJS服务:

  1. 部署项目文件
    • 将本地的.next文件夹、package.json、package-lock.json上传至服务器目标目录
    • 在服务器目录执行npm install --production安装生产环境依赖
  2. 托管Node.js服务
    为避免关闭命令行后服务终止,推荐用PM2托管:
    • 服务器全局安装PM2:npm install -g pm2
    • 在项目目录启动服务:pm2 start npm --name "next-app" -- start(默认启动3000端口,若端口冲突可在next.config.js中配置serverPort修改)
    • 设置开机自启:pm2 save && pm2 startup
  3. IIS反向代理配置
    • 安装IIS官方的URL重写模块和**应用程序请求路由(ARR)**模块(可通过Web平台安装程序获取)
    • 打开IIS管理器,创建新网站,物理路径可任意指定(仅用于绑定配置),设置好域名、端口绑定
    • 为网站添加反向代理规则:
      打开网站的「URL重写」功能,添加规则:匹配URL为(.*),动作类型选择「反向代理」,目标服务器地址填http://localhost:3000,保存规则。也可直接在网站根目录创建web.config添加以下配置:
      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
        <system.webServer>
          <rewrite>
            <rules>
              <rule name="NextJS Proxy" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://localhost:3000/{R:1}" />
              </rule>
            </rules>
          </rewrite>
        </system.webServer>
      </configuration>
      

通用注意事项

  • IIS 7和IIS 10的操作流程基本一致,仅模块安装入口略有差异
  • 确保Node.js服务端口未被占用,且IIS应用池身份、Node进程拥有项目文件的读取权限
  • 若需HTTPS,在IIS网站绑定中添加SSL证书,同时确保反向代理规则兼容HTTPS请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:12:52