Архитектура Веб-сервера

Александр Колосов

Основные функции Веб-сервера

  • Управление соединением
  • Прием и обработка запроса
  • Разделение доступа к нескольким обслуживаемым наборам ресурсов
  • Отдача статического содержимого
  • Взаимодействие с приложениями для получения и дальнейшей отдачи клиенту динамического содержимого

Высокоуровневая архитектура Веб-сервера

hl-web-arch.png

Модели обработки соединений

  • forking server
  • pre-forking server
  • worker threads
  • event-driven

Способы генерации динамического содержимого

  • Шаблоны
    • SSI (Server Side Includes)

      <!DOCTYPE html>
      <html>
          <head>
              <title>Server Side Includes Example</title>
          </head>
          <body>
              <!--#include file="menu.html"-->
              <p>
                  Some content
              </p>
          </body>
      </html>
      
    • ColdFusion
  • Взаимодействие со сторонним (отдельным от веб-сервера) приложением
    • Приложение не зависит от веб-сервера: CGI (Common Gateway Interface), FastCGI, SCGI.
    • Приложение зависит от сервера: Native APIs (ISAPI, NSAPI, Apache API), WSGI, сервлеты.
    • Смешанный подход — модуль веб-сервера запускает интерпретатор некоторго динамического языка, на котором написано приложение.
  • Обратное проксирование — приложение уже предоставляет HTTP-интерфейс, серверу необходимо только перенаправлять полученные запросы к нему.

Сервер приложений

Сервер приложений — программная среда, предоставляющая средства для создания и выполнения веб-приложений, а также обслуживающая запросы к ним.

Сервер приложений может обслуживать запросы по протоколу HTTP, а может только предоставлять интерфейсы для взаимодействия со внешним веб-сервером.

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