如何配置IIS将Next.js 14应用部署至指定子路径?
IIS配置Next.js 14子路径(mydomain.com/mynextapp)部署指南
前置准备
- 确保服务器已安装iisnode和URL Rewrite模块(可通过Web平台安装器下载)
- 配置Next.js项目的
next.config.js,添加生产打包配置:
/** @type {import('next').NextConfig} */ const nextConfig = { output: 'standalone', // 生成独立可部署的服务器文件 basePath: '/mynextapp', // 匹配IIS子路径别名 } module.exports = nextConfig
- 执行生产打包命令:
npm run build
部署文件到服务器
- 在
C://inetpub/wwwroot目录下创建mynextapp文件夹 - 将Next.js打包后生成的
.next/standalone目录下的所有文件,以及.next/static、public文件夹,复制到C://inetpub/wwwroot/mynextapp目录中
IIS管理器配置
- 打开IIS管理器,找到绑定
mydomain.com的目标网站 - 右键点击网站,选择添加应用程序:
- 别名:填写
mynextapp - 物理路径:指向
C://inetpub/wwwroot/mynextapp - 应用程序池:选择无托管代码的池(若没有则新建一个,.NET CLR版本设为
无托管代码)
- 别名:填写
配置web.config文件
在C://inetpub/wwwroot/mynextapp目录下创建/替换web.config,内容如下(注意修改node.exe路径为服务器实际安装路径):
<configuration> <system.webServer> <handlers> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="Next.js 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="server.js" /> </rule> </rules> </rewrite> <!-- 替换为服务器上node.exe的实际路径 --> <iisnode nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" /> <httpErrors errorMode="Detailed" /> </system.webServer> </configuration>
权限与故障排查
- 给
C://inetpub/wwwroot/mynextapp目录添加IIS_IUSRS和IUSR用户的读取权限 - 若仍报错,检查:
- web.config的XML语法是否正确(标签闭合、无拼写错误)
- iisnode模块是否已正确注册到IIS
- 应用程序池的身份是否有足够权限访问文件
- 重启IIS应用程序池和网站后再次测试
内容的提问来源于stack exchange,提问作者Devraj Srivastawa
相关产品推荐
相关产品推荐

