如何在不使用 iisnode 的情况下从 IIS/Windows 服务器版 OS 为 NodeJS 应用程序提供服务?

How to serve NodeJS application from IIS/Windows Server Edition OS without using iisnode?

所以,我在 Windows 上编写了一个具有服务器版 OS 的 NodeJS 应用程序,我的应用程序基本上通过使用 NodeJS 子进程执行一些命令来与安装在同一系统中的其他软件进行通信。

在本地主机上一切正常,因为我的服务器有一个静态 IP,我想将应用程序提供给 public。如何在不使用 iisnode 的情况下执行此操作?

我尝试使用 iisnode,但从那时起我就遇到了问题,我可以为我的站点提供服务器,但由于 C 驱动器上的一些权限问题,cmd 命令出现拒绝访问错误。

选项 1:

  1. 运行 您的 Node.js 应用在本地绑定,例如 http://localhost:8080 Reference
  2. 将 IIS 设置为反向代理 Reference

iisnode provides better control on application pool integration and so on, but since it is a dead project you definitely shouldn't use it any more.

选项 2:

使用 HttpPlatformHandler 启动您的 Node.js 应用,

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httppPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform stdoutLogEnabled="true" stdoutLogFile=".\node.log" startupTimeLimit="20" processPath="C:\Program Files\nodejs\node.exe" arguments=".\app.js">
            <environmentVariables>
                <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
                <environmentVariable name="NODE_ENV" value="Production" />
            </environmentVariables>
        </httpPlatform>
  </system.webServer>
</configuration>

Reference