如何在不使用iisnode的情况下从IIS/Windows Server Edition操作系统服务NodeJS应用程序?

ttcibm8c  于 2022-11-12  发布在  Windows
关注(0)|答案(1)|浏览(134)

所以,我已经写了一个NodeJS应用程序在Windows上有服务器版操作系统,我的应用程序基本上与其他软件通信安装在同一个系统通过执行一些命令使用NodeJS子进程.
在localhost上一切都很好,因为我的服务器有一个静态IP,我想把应用程序提供给public。如果不使用iisnode,我怎么能做到呢?
我尝试使用iisnode,但从那时起我就陷入了问题,我可以为我的网站提供服务,但由于C驱动器上的一些权限问题,cmd命令给出了拒绝访问错误。

kjthegm6

kjthegm61#

方案一:
1.在本地绑定(如http://localhost:8080 Reference)处运行Node.js应用程序
1.将IIS设置为反向代理Reference
iisnode对应用程序池集成等提供了更好的控制,但由于它是一个死项目,因此您肯定不应该再使用它。
备选方案二:
使用HttpPlatformHandler启动Node.js应用程序,

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" 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
请注意,由于您的Node.js安装,C:\Program Files\nodejs\node.exe可能是Map路径。您必须使用实际路径,例如C:\Users\<user name>\AppData\Roaming\nvm\v16.13.2\node.exe
请注意,您还需要为IIS_IUSRS授予足够的权限以访问node.exe

相关问题