所以,我已经写了一个NodeJS应用程序在Windows上有服务器版操作系统,我的应用程序基本上与其他软件通信安装在同一个系统通过执行一些命令使用NodeJS子进程.在localhost上一切都很好,因为我的服务器有一个静态IP,我想把应用程序提供给public。如果不使用iisnode,我怎么能做到呢?我尝试使用iisnode,但从那时起我就陷入了问题,我可以为我的网站提供服务,但由于C驱动器上的一些权限问题,cmd命令给出了拒绝访问错误。
kjthegm61#
方案一:1.在本地绑定(如http://localhost:8080 Reference)处运行Node.js应用程序1.将IIS设置为反向代理Referenceiisnode对应用程序池集成等提供了更好的控制,但由于它是一个死项目,因此您肯定不应该再使用它。备选方案二:使用HttpPlatformHandler启动Node.js应用程序,
http://localhost:8080
<?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。
C:\Program Files\nodejs\node.exe
C:\Users\<user name>\AppData\Roaming\nvm\v16.13.2\node.exe
IIS_IUSRS
node.exe
1条答案
按热度按时间kjthegm61#
方案一:
1.在本地绑定(如
http://localhost:8080
Reference)处运行Node.js应用程序1.将IIS设置为反向代理Reference
iisnode对应用程序池集成等提供了更好的控制,但由于它是一个死项目,因此您肯定不应该再使用它。
备选方案二:
使用HttpPlatformHandler启动Node.js应用程序,
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
。