-
-
Notifications
You must be signed in to change notification settings - Fork 0
iisnode Alternatives
iisnode is still the top answer for "how do I run Node on IIS", and it should not be.
Its last release was nine years ago, it lists Windows Server 2012 as a prerequisite, and
it pre-dates almost everything a modern Node application assumes. If you have an existing
iisnode deployment it will keep working. If you are building something now, start
somewhere else.
Here is what to use instead, depending on why you were reaching for it.
Run the app as a Windows Service, and put Caddy in front of it.
The app listens on 127.0.0.1:3001. Caddy owns 80 and 443, routes by domain, and obtains
and renews the certificate itself. No IIS, no web.config, no module to install.
example.com {
reverse_proxy 127.0.0.1:3001
}Two supported routes, both from Microsoft:
HttpPlatformHandler launches your process and forwards requests to it, which is the
closest replacement for what iisnode did. It is generic — it does not know or care that
your app is Node.
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*"
modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="C:\Program Files\nodejs\node.exe"
arguments="server.js"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\node"
startupTimeLimit="20">
<environmentVariables>
<environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>Application Request Routing + URL Rewrite turns IIS into a plain reverse proxy in front of a Node process you started yourself as a service. Two extra downloads and a rewrite rule, but the process management stays in your hands where it is easier to reason about.
Either way you inherit application-pool recycling, idle time-outs and identity settings that were designed for ASP.NET, so read those before your app starts mysteriously restarting at 3am.
WinPanel does the first option for every site automatically — port allocation, service registration, proxy configuration, certificates, DNS, Git deploys with rollback — plus mail and customer logins. Free and self-hosted.
Plesk for Windows is the mature commercial equivalent, licensed per server.
| Problem | Consequence |
|---|---|
| No releases since 2016 | No fixes for anything found since, in a component sitting in the request path |
| Targets Windows Server 2012 | Nothing has been validated against 2019, 2022 or 2025 |
| Process model predates modern Node | Clustering, worker threads and long-lived connections behave in ways the docs do not describe |
| WebSockets need extra configuration | And still disappoint, where a proxy upgrades them with nothing to configure |
Every deployment needs a web.config
|
A file that exists only to satisfy IIS, checked into your repository |
Is iisnode deprecated? It was never formally deprecated — it was simply abandoned.
The repository is archived-in-practice, with no releases for nine years.
Can I migrate off it without downtime? Yes. Register the app as a service on a new port, prove it works there, then switch the front door — remove the IIS site (or stop IIS holding 80/443) and let the proxy take over. See Fix port 443 already in use.
Do I have to uninstall IIS? No. It only has to stop holding ports 80 and 443.
WinPanel — a free control panel for hosting websites, Node.js apps and email on Windows Server 2022/2025, without IIS. Download · Ask on Discord
Home · Repository · Download · Discord
Start here
How to
- Node app as a Windows Service
- SSL without IIS
- Deploy from GitHub
- WordPress on Windows
- Host your own email
- Host from a home PC
Choosing
Problems