Small just for fun project to dig deeper into the HTTP 1.1 and fast-cgi protocols.
What is working?
- multithreaded processing of incoming requests
- registry with different handlers (transform request to response)
- simple request matching (based on location or host etc.)
- Handler to server static files from disk
- simple registry to set correct content-type for static files based on extension
- FastCgiHandler to proxy requests via fast-cgi protocol (tested with php-fpm)
- keep-alive for connections to fast-cgi proxy
- chunked transport encoding
- gzip content encoding
- support for HTTP 1.1 keep-alive
- maybe introduce some kind of URL rewriting like apache and nginx offer?
- support for more conditional GET requests (currently only If-Modified-Since for 304 working)
- more tests
So far it looks like the performance is not too bad in comparison with apache2 or nginx for example. Maybe at some point I will put together some benchmarks.