返回

Windows 环境下如何使用 IIS 发布 Next.js SSR 网站

2025-11-28 Windows IIS Next.js 258 0

对于使用 Next.js (支持 SSR/SSG) 的项目,如果你希望在 Windows 环境下发布并上线,本文将为你梳理一个较为完整、实用的流程 —— 适合自托管 (self-hosting) 场景。

为什么选择 SSR + Windows

Next.js 支持静态生成 (Static Export) 和服务器端渲染 (SSR) 等多种渲染方式。SSR 能够在服务器生成 HTML,提升页面首次加载速度和 SEO 友好度。若你的内容频繁更新、或依赖动态数据/用户登录等功能,SSR 是更合适的选择。

Windows 也可以作为服务器环境 —— 许多传统公司或个人习惯用 Windows + IIS (Internet Information Services) 管理网站。因此,在 Windows 下部署 Next.js SSR,有助于兼顾习惯与功能。

准备阶段 —— 环境要求

在开始部署前,请确保你的 Windows 服务器(或机器)已经安装并配置好以下内容:

  • 安装合适版本的 Node.js (与本地开发时一致,推荐使用 LTS 版),以便运行 Next.js SSR。
  • 如果你打算使用 IIS 来做前端请求处理 (代理 + 静态资源 + SSR 转发),需要安装 IIS,并准备好类似 iisnode、URL-Rewrite 等插件/组件。
  • 确保你的 Next.js 项目已经通过开发、测试,结构清晰 (pages / components / public 等目录),并且 package.json 中包含必要的脚本。

构建生产版本

在你的 Next.js 项目目录下 (Windows 本地机器或服务器上),打开命令行 (cmd / PowerShell / WSL 均可),执行:

npm run build

该命令会构建你的应用,生成适合生产环境的构建产物。随后,可以通过:

npm run start

启动 Next.js 的 Node.js 服务器。这个方式是官方推荐的自托管 SSR 方式。

这样运行的服务器 支持 Next.js 的所有功能 (SSR、API 路由、动态页面等),而不仅仅是静态内容。

将 Next.js 部署到 IIS (Windows)

如果你希望借助 IIS 提供 HTTP 服务 (端口 80 / 443),而将真正的 SSR 处理交给 Node.js,可以按照如下思路操作:

  1. 在 Windows Server 上安装并启用 IIS,并配置好一站点 (site),将其作为你的域名入口。
  2. 安装 iisnode(或其它兼容模块) + URL Rewrite,使 IIS 能把特定请求 (通常为到根路径 /, 或所有非静态资源请求) 转发 / 代理到 Node.js 服务 (例如运行在 3000 端口的 npm start)。
  3. 将 Next.js 构建产物 (包括 .nextpublic 目录,以及 server.js / package.json 等) 上传到服务器,并在合适路径下执行 npm start
  4. 确保 Node.js 服务稳定运行 (可以考虑 Windows 的进程管理 / 服务管理方式)。IIS 负责外部请求接入 + HTTPS / 静态资源 /反向代理,Node.js 服务负责 SSR 内容渲染。

这种方式兼顾了 IIS 的管理便利性 + Next.js 的 SSR 性能。

常见问题与注意事项

  • 使用纯静态托管 (Static Export) 虽然部署简单,但无法发挥 SSR、动态 API 等能力 —— 如果你的项目需要 SSR,就必须让服务器运行 Node.js。
  • 将 Node.js 与 IIS 混合部署时,必须确保 URL 重写 / 代理配置正确,否则可能出现资源 404、路由错误等问题。
  • 若服务器重启或进程崩溃,你需要确保 Node.js 服务能自动重启 (可借助 Windows 服务 / Task Scheduler / PM2 for Windows 等方案)。
  • 确认环境变量 (例如 API Keys、数据库连接字符串等) 在生产环境中正确配置 (Windows 下也可通过系统环境变量或 .env 文件处理)。

总结与建议

在 Windows 环境中使用 IIS + Node.js + Next.js 部署 SSR 网站,是一种兼顾传统 Windows 服务器管理习惯与现代 Web 应用能力的方案。对于习惯 Windows,且希望用 SSR 提高 SEO、动态内容质量、灵活 API 的开发者来说,非常值得采用。

如果你是第一次尝试,推荐先在本地 (Windows) 模拟部署 (build + start),确认 SSR 正常。然后再将构建产物上传到服务器,配置 IIS + iisnode + 代理 + HTTPS,最终上线。

顶部