I’m still fiddling with a web server idea, currently trying my umpteenth version of it in Go. One of the things I want to do is serve a bunch of different things from one binary; they would usually live behind Nginx anyway, and I like the simplicity of serving a bunch of (somewhat) dynamic, small sites from a single program.
So, how does one do it? Why, one does it with Goroutines!
I had expected that to be the answer, but even then I was surprised at the simplicity of this solution. You don’t even need channels, since
http.ListenAndServe is a blocking call if it’s not in a Goroutine.
Here’s the code, which should be self-explanatory.