Windows – a suitable simple, open web server for Windows

open sourceweb-serverwindows

I'm looking for a dead simple web server for Windows. Load will not be high as it will be primarily serving binaries for a WPKG update service. It needs to serve the entire contents of a single folder over HTTP on a configurable (high) port. No CGI or other scripting is required, but it might be nice for future features.

I started with Mongoose, since it doesn't even have an installation requirement (a very nice perk), but it fails to start when run as a service. (Technically, it acts as it's own installer.) I've investigated LighTPD as well, but it appears to be minimally (at best) tested on Windows.

And naturally, I'm looking for something free. As in beer is good, but speech is better, as always.

Edit: I didn't mention this initially, but non-tech people will be doing the install. They'll have whatever script I write for the install, but the goal is a simple system that is easy to troubleshoot.

(I almost worded this question "What is the best…", but Serverfault rightly observed that that is a subjective question. And it's really not an optimization problem, any suitable solution will work. I just can't seem to find one for Windows.)

Best Answer

As others have stated, Apache is the clear choice here: flexible, well-tested on Windows (any "NT" version of Windows), for your application will require minimal configuration changes. Small footprint too. While Apache has rightly been criticized for a glut of configuration files, for simply dishing up some files, you would literally have to make one, maybe two changes to the default configuration:

Listen <your new port> and potentially: DocumentRoot c:\my\binary\path

Another aspect that you may not have considered is the binary signature and anti-virus: httpd.exe is a very common process, well-documented, open source; will not trigger false positives like perhaps a lesser known "freeware" Windows web server (Symantec uses it for their Endpoint Protection product to do exactly what you're doing: distributing update binaries to clients; I would think if it works for Symantec...).

Also, there's a built-in service install, all scriptable from the httpd executable (httpd -k install -n "MyServiceName" -f "c:\files\my.conf") so easy to "sidechain" from the parent installer. Easy to clean up/uninstall (again, httpd -k uninstall -n "MyServiceName").

More information here.