如何在IIS上配置NodeJS REST API通过自定义URL访问(无需开端口)
实现方案:通过IIS反向代理映射NodeJS API到默认站点路径
前提准备
- 先安装URL Rewrite和**Application Request Routing (ARR)**模块,这俩是IIS做反向代理的必备组件,直接通过IIS管理器的「管理」→「Web平台安装程序」搜索安装即可。
步骤1:开启ARR代理功能
- 打开IIS管理器,选中左侧服务器根节点,找到「Application Request Routing Cache」
- 右侧操作栏点击「Server Proxy Settings」
- 勾选「Enable proxy」,点「Apply」保存
步骤2:给默认站点配置反向代理规则
- 选中默认站点(比如「Default Web Site」),找到「URL Rewrite」功能
- 右侧点「Add Rule(s)...」,选「Reverse Proxy」模板后点「OK」
- 在目标服务器地址输入框填
http://localhost:3000 - 如果你的默认站点已经配置了HTTPS,勾选「Enable SSL offloading」(让IIS处理SSL,后端NodeJS用HTTP就行)
- 点「OK」生成基础规则,接下来要调整路径匹配逻辑
步骤3:修改规则匹配路径
- 在默认站点的URL Rewrite规则列表里,双击刚创建的规则进入编辑
- 「Match URL」区域设置:
- 「Requested URL」选「Matches the Pattern」
- 「Using」选「Regular Expressions」
- 「Pattern」填
^nodejsapp/(.*)
- 「Action」区域设置:
- 「Action Type」选「Rewrite」
- 「Rewrite URL」填
http://localhost:3000/{R:1}({R:1}会把/nodejsapp后面的路径传递给后端,比如/nodejsapp/api/user会转发到http://localhost:3000/api/user)
- 点「Apply」保存规则
步骤4:验证配置
- 确保NodeJS API已经在本地3000端口启动
- 访问
https://example.com/nodejsapp/api/xxx(替换成你的实际接口路径),检查是否能正常返回数据 - 同时确认原来的PHP/MySQL站点(比如根路径
https://example.com)依然可以正常访问
备选方案:直接部署NodeJS到默认站点虚拟目录
如果不想用反向代理,也可以把NodeJS项目直接部署到默认站点的nodejsapp虚拟目录:
- 安装IIS Node模块(通过Web平台安装程序搜索)
- 在默认站点下创建虚拟目录「nodejsapp」,指向NodeJS项目根目录
- 在项目根目录新建
web.config,配置启动脚本和Node路径,示例:
<configuration> <system.webServer> <handlers> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="NodeJS"> <match url="/*" /> <action type="Rewrite" url="server.js" /> </rule> </rules> </rewrite> <iisnode nodeProcessCommandLine="C:\Program Files\nodejs\node.exe" /> </system.webServer> </configuration>
- 此方案不需要手动启动NodeJS服务,IIS会托管运行项目,但需要把代码部署到服务器上,适合直接部署项目而非转发已运行的本地服务
内容的提问来源于stack exchange,提问作者Satnam Singh
相关产品推荐
相关产品推荐

