Что такое веб-сервер

Веб-сервер — это штука, без которой не работает ни один сайт в интернете. Каждый раз, когда вы заходите на сайт ваш браузер связывается с сервером и запрашивает необходимые для работы ресурсы: HTML, CSS и JS файлы, картинки, шрифты и прочее. Веб-сервер отвечает за то, чтобы найти эти ресурсы на сервере и переслать их браузеру.

Веб-сервер — это программа. Она без перерывов работает на сервере, ожидает когда посетитель сайта запросит у неё новую страничку. Веб-серверов существует огромное множество, разбор их особенностей не входит в цели этой статьи. Рассмотрим общую схему их работы.

Когда веб-сервер не нужен

Выше сказано, что сайты не работают без веб-сервера, но вы легко можете убедиться в обратном. Выберите сайт в интернете, сохраните его страницу на свой компьютер и откройте файл в браузере. Не со всяким сайтом этой выйдет, но часто это возможно: веб-сервера нет, а сайт работает.

Фокус в том, что браузер сам берет на себя функцию веб-сервера когда сталкивается с адресами вида file://.... Сделано это ради удобства и работает только с file:// адресами.

Подробнее про адреса читайте в статье Относительный адрес. Про *.html, *.css и прочие файлы — в статье про Статику.

Статический сайт на сервере

Самый простой вид сайтов — это статический сайт. Такой сайт состоит из одного HTML файла и нескольких подключаемых ресурсов — файлов статики. Чтобы опубликовать статический сайт в интернете нужен веб-сервер, который:

  • дождется запроса от браузера
  • поймет какой файл хочет браузер
  • найдет файл на диске сервера
  • отправит файл браузеру

Динамический сайт

Чаще всего в интернете встречаются динамические сайты: интернет-магазины, соц-сети, блоги — все они регулярно обновляются и для анонимных пользователей выглядят совсем не так, как для авторизованных. На таких сайтах каждый посетитель получает свою версию HTML-разметки, и поэтому сервер генерирует её на лету. А вот статика и медиа для всех общие, поэтому хранятся в виде обычных файлов. Чем отличается статика от медиа читайте в статье про Статику.

Веб-сервер динамического сайта напоминает пункт сортировки писем на почте — ориентируясь по адресу запроса веб-сервер либо ищет файл в одном каталоге, либо в другом, либо передаёт запрос другому веб-серверу.

Чтобы веб-серверу было проще понять что и где искать программисты добавляют к адресам специальные префиксы. Всю статику размещают на адресах, начинающихся со /static/..., а всю медиа — на /media/.... На разных сайтах используют разные префиксы, единого стандарта здесь нет. В терминах Django эти префиксы называются STATIC_URL и MEDIA_URL.

Пути к каталогам, в которых хранятся файлы статики и медиа в терминах Django называют STATIC_ROOT и MEDIA_ROOT соответственно.

STATIC_URL — это префикс урла, а STATIC_ROOT — префикс пути