Задание:
Разработать веб-сервер для отдачи статики с диска. Язык программирования и технология многопоточной обработки соединений выбрать самостоятельно. Разрешается использовать библиотеки помогающие реализовать асинхронную обработку соединений (libevent/libev, netty и им подобные), запрещается использовать библиотеки реализующие мультипоточную обработку или какую-либо часть обработки HTTP. Провести нагрузочное тестирование, проверку стабильности и корректности работы.
Веб-сервер должен уметь:
- Масштабироваться на заданное количество CPU (либо использовать все)
- Отвечать на GET-запросы и HEAD-запросы
- Возвращать index.html как индекс директории
- Возвращать файлы по произвольному пути в DOCUMENT_ROOT
- Отвечать следующими заголовками для успешных GET-запросов: Date, Server, Content-Length, Content-Type, Connection
- Корректный Content-Type для: .html, .css, .js, .jpg, .jpeg, .png, .gif, .swf
- Понимать пробелы и %XX в именах файлов
- Стабильно работать
- Иметь производительность сопоставимую с nginx (разница не больше порядка)