如何在Windows服务器的Plesk或IIS上部署Nuxt 3?配置求助
Nuxt 3 在 Windows Plesk/IIS 环境的部署配置及问题解决
一、当前问题快速修复
你现在浏览器直接显示启动代码,核心原因是 IIS/Plesk 没把请求转发给 Node.js 服务,反而把 entry.js 当静态文件返回了,按下面步骤调整:
- 修正启动文件名:你写的
entery.js是拼写错误,改成entry.js,内容保持import('./.output/server/index.mjs')不变。 - 调整 Plesk 文档根目录:别把文档根目录设为
httpdocs,Nuxt 3 的静态资源存在.output/public,所以要改成httpdocs/.output/public。 - 启用反向代理:在 Plesk 的 Node.js 设置里勾选「Enable reverse proxy」,这步是让 IIS 把动态请求转发给 Node.js 服务的关键。
- 重启应用:在 Plesk 的 Node.js 面板点「Restart App」,查看日志确认服务正常启动(日志里会出现 Nuxt 启动提示,比如
Listening on http://localhost:xxxx)。
二、完整部署配置步骤
1. 本地构建项目
先在本地执行构建命令,生成部署文件:
npm run build
构建完成后会得到 .output 目录,包含服务端代码(server)和静态资源(public)。
2. 上传文件到服务器
把 .output 整个上传到 Plesk 域名的 httpdocs 目录下,然后在 httpdocs 根目录创建 entry.js 文件,内容就是你写的:
import('./.output/server/index.mjs')
3. Plesk Node.js 核心配置
- Node.js 版本:选 18.x(你当前的版本没问题)
- 应用模式:Production(正确)
- 应用根目录:
httpdocs(正确) - 启动文件:
entry.js(注意拼写) - 文档根目录:
httpdocs/.output/public(必须设对,静态资源从这里读取) - 反向代理:必须启用,否则动态请求不会交给 Node.js 处理
4. 直接用 IIS 的额外配置(非 Plesk 环境)
如果是直接管理 IIS,需要做这些:
- 安装 URL Rewrite 和 Application Request Routing (ARR) 模块
- 在站点的
web.config里添加反向代理规则,把请求转发到 Node.js 服务端口(比如 localhost:3000):
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://localhost:3000/{R:1}" /> </rule> </rules> </rewrite> <staticContent> <mimeMap fileExtension=".mjs" mimeType="text/javascript" /> </staticContent> </system.webServer> </configuration>
- 确保 IIS 对
httpdocs/.output目录有读写权限,Node.js 进程能访问该目录
三、常见排查点
- 仍显示代码:检查反向代理是否启用、文档根目录是否正确、启动文件名拼写
- 502 错误:查看 Node.js 日志,确认服务是否启动、端口是否被占用
- 静态资源加载失败:确认文档根目录指向
.output/public,且文件完整上传
内容的提问来源于stack exchange,提问作者Mohammad Chavoshi
相关产品推荐
相关产品推荐

