Skip to content

Tenagrim/http_web_server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

392 Commits
 
 
 
 
 
 
 
 

Repository files navigation


HTTP web server


Описание задачи

Написать HTTP сервер по стандарту RFC 7230-7235 на С++, реализовав:

1. Соединение клиент-сервер;

2. Запуск двух и более серверов;

3. Методы GET, POST, PUT, HEAD;

4. Коды состояний, обработка ошибок;

5. Заголовки запроса/ответа

6. Принятие chunked запроса

7. Автоиндексация

8. Поддержку CGI скриптов

9. Авторизацию клиентов

10. Настраиваемый конфигурационный файл

За основу было взято оригинальное поведение Nginx.


Настройка конфигурационного файла

В основной структуре сервера мы можем указать:

1. listen - порты сервера;

Пример: "listen 80 81"

2. server_name - наименование сервера;

Пример: "server_name example.com"

3. root - корневая директория;

Пример: "root /Users/pcatrina/Desktop/workspace/webserv/webserv/resources"

4. error_page - путь до файла, который будет отображаться вместо страницы ошибки;

Пример: "error_page 405 /40x.html"

5. autoindex - on/off автоиндексацию;

Пример: "autoindex off"


В структуре location мы можем указать:

1. root - корневая директория;

Пример: "root /Users/pcatrina/Desktop/workspace/webserv/webserv/resources/42_test"

2. index - отображаемая страница;

Пример: "index index.html"

3. limit_except - разрешенные методы у location;

Пример: "limit_except POST GET"

4. limit_client_body_size - лимит на посылаемое body от клиента;

Пример: "limit_client_body_size 10"

5. fastcgi_pass - путь до интерпретатора CGI скриптов;

Пример: "fastcgi_pass /Users/pcatrina/Desktop/workspace/webserv/webserv/resources/42_test/cgi_tester;"

6. auth_basic - заголовок авторизации;

Пример: "auth_basic ruslan:ruslan"

Авторизация в данном проекте сделана посредством Basic-авторизации. Логин:пароль авторизованных клиентов хранится в файле.

7. client_max_body_size - ограничение на максимальный размер тела запроса;

Пример: "client_max_body_size 100"


(!) Программа принимает конфигурационный файл в качестве аргумента. (!)

Ссылки

RFC 7230

А. В. Столяров "Системы и сети"

HTTP заголовки

HTTP коды состояний

Заметки по проекту

Проект написан по стандарту С++ 98.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors