Skip to content

EtoMisha/Webserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Учебный проект в "Школе 21" - HTTP вебсервер на C++

Работает с несколькими соединениями через poll, умеет отвечать на GET и POST запросы, отдавать статические страницы и файлы.

Также может запускать python и php скрипты, передавая им данные вебформ.

Настраивается конфиг-файлом, обрабатываются такие настройки:

  • Хост и порт
  • Главная страница
  • Корневая директория
  • Принимаемый метод
  • Папка для загрузки файлов
  • Страницы ошибок
  • Максимальный размер файла от клиента
  • Редиректы
  • Автоиндекс (вместо страницы показывать список файлов в директории)

Для поддиректорий настройки можно переопределять

Например такой конфиг файл запустит сервер на три порта, в первом настроены директории с редиректом, с листингом файлов и тд

 server {
	listen 127.0.0.1:7070
	index index.html
	root res/
	upload_path /upload/
	client_max_body_size 80
	methods GET POST
	
	location /tools/
	{
		root tools/
		index tools.html
		autoindex off
		client_max_body_size 120
		error_page 404 /errors/404.html
		error_page 405 /errors/405.html
		methods GET
	}

	location /redirect/
	{
		redirection https://yandex.ru 301
	}

	location /list/
	{
		root list/
		autoindex on
	}
}

server {
	listen 127.0.0.1:8080;
	upload_path /upload/
	root res/
	index index.html
	methods GET
}

server {
	listen 127.0.0.1:9090
	root res/
	index index.html
}

Скомпилировать программу: make. Запустить: ./webserver <конфиг файл>

About

Свой HTTP сервер на сокетах

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages