Issue
So, I’ve written a NodeJS application on Windows having Server Edition OS, My application basically communicates with other Softwares installed in the same system by executing some commands using NodeJS child process.
Everything is working fine on localhost, as my server has a static IP, I want to serve the application to public. How can I do this without using iisnode?
I tried using iisnode, but I am falling into issues since then, I am able to server my site, but due to some permission issues on C drive, the cmd command gives Access Denied error.
Solution
Option 1:
- Run your Node.js app at a local binding such as
http://localhost:8080
Reference - Set up IIS as reverse proxy 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.
Option 2:
Use HttpPlatformHandler to launch your Node.js app,
<?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>
Note that due to your Node.js installation,
C:\Program Files\nodejs\node.exe
might be a mapped path. You have to use the actual path instead, such asC:\Users\<user name>\AppData\Roaming\nvm\v16.13.2\node.exe
.
Note that you also need to give
IIS_IUSRS
enough permissions to accessnode.exe
.
Answered By – Lex Li
This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0