Linux.com: Unix Web Application Architectures – Part 2: The Web Server

One choice to make when deciding on the architecture of an
application is whether to use an existing web server for HTTP
request handling, or if it would be better to implement an HTTP
server as part of the application.

“The first HTTP protocol version, now known as HTTP version 0.9,
was very simple one. There was just the GET method with no
additional information, and the response was the document body as
is. Not much was won by using a separate web server, instead of
embedding one as part of one’s application. But this was the
situation 5 years ago.”

“The current HTTP protocol version is 1.1, and the RFC
specifying it is over 400 KB of text. It includes 6 different
methods and 17 different request headers. A good implementation
should also work around bugs in client implementations. For
example, some browsers don’t work properly with keep-alive
connections, and that feature shouldn’t be used with those buggy
browsers (as reported by the User-Agent field). For these reasons,
if good HTTP protocol compliance matters, it’s a good idea to use a
separate HTTP server. An additional benefit of doing that is that
often a part of the application features is best implemented by the
web server, such as automatic directory listings, HTTP access
control or redirections.”