如何将Angular 17 SSR部署到IIS?部署后无法访问求指导
Angular 17 SSR IIS 部署故障排查指南
1. 检查IIS必需组件
- 确认已安装URL重写模块和iisnode模块:这两个是IIS托管Node.js服务的核心组件,缺失会导致请求无法转发到Angular SSR服务。
- 服务器需安装与开发环境版本一致的Node.js,避免版本兼容问题。
2. 核对文件结构与权限
- 确认文件结构:
ngssrdemo目录下需包含browser、server子文件夹,main.js、web.config,以及package.json(若打包时未携带依赖,需在服务器目录执行npm install安装依赖)。 - 给
ngssrdemo文件夹添加IIS_IUSRS和IUSR用户的读写权限,防止因权限不足无法读取文件或启动服务。
3. 验证Node服务能否正常启动
- 打开服务器命令提示符,进入
ngssrdemo目录,执行node main.js:- 若出现
Listening on http://localhost:xxxx类输出,说明服务本身正常,问题出在IIS配置。 - 若启动报错,根据提示修复(如缺失依赖则运行
npm install,端口占用则修改SSR服务端口)。
- 若出现
4. 修正web.config配置
替换现有web.config为以下内容(注意修改Node.js实际安装路径):
<configuration> <system.webServer> <handlers> <add name="iisnode" path="main.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="Angular SSR" 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="main.js" /> </rule> </rules> </rewrite> <!-- 替换为服务器上Node.js的实际安装路径 --> <iisnode nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" /> </system.webServer> </configuration>
5. 查看详细错误日志
- 在IIS管理器中选中目标网站,点击右侧“错误页”,设置“编辑功能设置”为“详细错误”,刷新页面获取具体报错信息。
- 查看网站日志(路径可在IIS“日志”功能中查看),定位请求失败的具体原因。
内容的提问来源于stack exchange,提问作者Bijith NV
相关产品推荐
相关产品推荐

