One Windows VPS with a single public IP can host an ASP.NET Core site, a Node.js API, a static site, and a WordPress install at the same time. The glue is IIS with the URL Rewrite module, and when you add Application Request Routing (ARR) it doubles as a reverse proxy that routes traffic to apps on any internal port. Here is how the pieces fit together.
Running several runtimes on one box means the RAM and CPU budget matters more than ever — our comparison table shows which Windows VPS plans give you enough memory for IIS plus a couple of application runtimes.
Install the Modules
URL Rewrite 2.1 and ARR 3.0 are free downloads from IIS.net, or via winget on modern Server installs:
winget install Microsoft.URLRewrite
winget install Microsoft.ApplicationRequestRouting
Both are ISAPI-level modules that plug into IIS without rebooting the server. Restart IIS once with iisreset and confirm both modules appear in IIS Manager under the server node. They are free and Microsoft-supported — the same rewrite engine Azure App Service uses internally, so you are configuring production-grade software on a small VPS.
Rewrite Rules in web.config
Rules live in the web.config of each site, so they deploy with your code. A clean-URL rule that maps /products/123 to a query string:
The {R:1} back-reference captures the first pattern group, and stopProcessing prevents later rules from overriding the match. Rules are evaluated top to bottom, so order matters — put specific rules before catch-alls.
Reverse Proxy with ARR
With ARR installed and proxy mode enabled, a rewrite rule can forward traffic to an app listening on a different port — say a Node.js API on 3000 or a Python service on 8000:
ARR forwards the original Host header and handles WebSocket upgrades, so a Node.js chat app or SignalR hub proxies cleanly. For heavier setups, ARR also has a Server Farms UI that adds health checks, load balancing across multiple back-ends, and centralized caching.
Multiple Sites, One IP
Beyond path-based routing, IIS natively hosts many sites on one IP by matching the Host header. Create one site per domain, bind each to port 80 with its own host name, and IIS routes requests by name — no extra public IPs needed. Combine that with per-site rewrite rules and the reverse proxy above, and a single VPS behaves like a small hosting platform. Verify bindings locally before pointing DNS at them:
curl -H "Host: app1.example.com" http://localhost/
Create the bindings in IIS Manager or with New-WebBinding, then confirm each site answers its own host name before touching public DNS. Two sites can share port 80 with no conflict because IIS routes purely on the header — which is also why a wildcard binding on one site can shadow the others, so keep bindings explicit.
Rewrite Maps for Static Translations
For a fixed set of old-to-new path pairs, a rewrite map is cleaner than a pile of rules. Define the map once, then reference it from a rule:
Maps are ideal for preserving old URLs after a migration — search engines and bookmarked links keep working while the underlying app changes completely.
Outbound Rules
Everything so far is an inbound rule. Outbound rules rewrite the response — for example, rewriting absolute links in HTML returned by a back-end app so they point at the public hostname instead of localhost. This is often the missing piece when a proxied app loads but images and links resolve to the wrong address.
Troubleshooting
- 502.3 / 502.5 errors mean the back-end is not listening — test it directly with curl http://localhost:3000 on the server.
- Rules not matching? Enable Failed Request Tracing (FREB) on the site and add a trace rule for the rewrite provider to see every rule evaluation.
- The proxy silently does nothing if ARR is not installed — URL Rewrite alone cannot proxy; it needs the ARR proxy mode.
- Double-check rule order: the first matching rule with stopProcessing wins.
One ordering trap catches most people: server-level rules execute before site-level rules. If a catch-all at the server level uses stopProcessing, your site-level rules never run — check the server node’s web.config before debugging a rule that looks correct but never fires.
Running several apps on one box is exactly where Contabo’s RAM-per-dollar Windows VPS plans shine — one instance can carry IIS plus a Node and a Python service without breaking a sweat.
URL Rewrite plus ARR gives a single Windows VPS the routing power you would expect from a dedicated proxy tier. Clean URLs, path-based routing to internal ports, and name-based multi-site hosting all come free with the OS. Compare plans side by side in our comparison table to pick a host with enough RAM for multiple runtimes, then start consolidating.



