Написать классический статик сервер для отдачи контента с диска.
Требования:
- Поддержка запросов GET и HEAD (поддержка статусов 200, 403, 404).
- Ответ на Неподдерживаемые запросы статусом 405
- Выставление content type в зависимости от типа файла (поддержка .html, .css, .js, .png, .jpg, .jpeg, .swf, .gif)
- Корректная передача файлов размером в 100мб.
- Сервер по умолчанию должен возвращать html-страницу на выбранную тему с css-стилем.
- Учесть минимальные требования к безопасности статик-серверов (предусмотреть ошибку в случае если адрес будет выходить за root директорию сервера)
- Реализовать логгер.
- Использовать язык Си. Сторонние библиотеки запрещены.
- Реализовать архитектуру по одному из вариантов представленных ниже (номер варианта = ваш порядковый номер в списке электронного университета mod количество вариантов + 1)
- Статик сервер должен работать стабильно.
- Провести сравнение результатов прохождения нагрузочного тестирования при помощи apache benchmark с nginx.
Варианты архитектуры сервера (для каждого студента определяется по <порядковый номер студента> mod 8):
- thread pool + select()
- prefork + select()
- thread pool + pselect()
- prefork + pselect()
- thread pool + poll()
- prefork + poll()
- thread pool + epoll() -- мой варик
- prefork + epoll()