Слайд 1Веб-серверы. Классификация.IIS, Apache, Ngnx
Слайд 2Классификация Web-серверов
1. Серверы (сайты) управления трафиком (Навигационные сайты)
Основная задача: перенаправление потребителей
конечным серверам (напр.: поисковые системы, каталоги)
2. Конечные серверы.
Основное назначение: получение, как
можно большего числа повторных посещений. Предоставляют пользователям разнообразные ресурсы, ради которых пользователи посещают Интернет.
Конечные серверы (сайты), предоставляющие ресурсы из области деловой информации, делят на: корпоративные сайты, информационные сайты, торговые площадки.
Слайд 3Apache
Apache HTTP-сервер (сокращение от англ. a patchy server) — свободный веб-сервер.
Apache
является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS,
Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.
Слайд 4Apache
Архитектура
Ядро Apache включает в себя основные функциональные возможности, такие как
обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро
(в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов.
Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена.
Ядро Apache полностью написано на языке программирования C.
Слайд 5Apache
Система конфигурации
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет
три условных уровня конфигурации:
Конфигурация сервера (httpd.conf).
Конфигурация виртуального хоста (httpd.conf c
версии 2.2 extra/httpd-vhosts.conf).
Конфигурация уровня директории (.htaccess).
Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.
Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).
Помимо этого, параметры могут быть заданы через ключи командной строки.
Слайд 6Apache
Система модулей
Apache HTTP Server поддерживает модульность. Существует более 500 модулей[7],
выполняющих различные функции. Часть из них разрабатывается командой Apache Software
Foundation, но основное количество — отдельными open source-разработчиками.
Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.
Слайд 7Apache
Механизм виртуальных хостов. Apache имеет встроенный механизм виртуальных хостов. Он
позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён),
отображая для каждого из них собственное содержимое.
Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и guid.
Слайд 8Интеграция с другим ПО и языками программирования
Существует множество модулей, добавляющих
к Apache поддержку различных языков программирования и систем разработки.
PHP (mod_php).
Python
(mod python, mod wsgi).
Ruby (apache-ruby).
Perl (mod perl).
ASP (apache-asp).
Tcl (rivet)
Слайд 9Apache
Безопасность
Ограничение доступа к определённым директориям или файлам.
Механизм авторизации пользователей для
доступа к директории по методу HTTP-Авторизации (mod_auth_basic) и digest-авторизации (mod_auth_digest).
Ограничение
доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей.
Запрет доступа к определённым типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных.
Существуют модули, реализующие авторизацию через СУБД или PAM.
Слайд 10IIS
сIIS (Internet Information Services, до версии 5.1 — Internet Information Server)
— проприетарный набор серверов для нескольких служб Интернета от компании
Майкрософт. IIS распространяется с операционными системами семейства Windows NT. Основным компонентом IIS является веб-сервер, который позволяет размещать в Интернете сайты. IIS поддерживает протоколы HTTP, HTTPS, FTP, POP3, SMTP, NNTP.
Слайд 11Служба WWW в составе IIS
Основным компонентом IIS является веб-сервер —
служба WWW (называемая также W3SVC), которая предоставляет клиентам доступ к
сайтам по протоколам HTTP и, если произведена настройка, HTTPS.
Один сервер IIS может обслуживать несколько сайтов (IIS 6.0 и выше). Каждый сайт имеет следующие атрибуты:
IP-адрес сайта;
TCP-порт, на котором служба WWW ожидает подключений к данному сайту;
Заголовок узла (Host header name) — значение заголовка Host запроса HTTP, указывающее обычно DNS-имя сайта.
Слайд 12Архитектура службы WWW
В IIS 6.0, доступном в составе систем Windows
Server 2003, служба WWW претерпела серьёзные изменения. Был добавлен новый
режим обработки запросов, называемый режимом изоляции рабочих процессов (англ. worker process isolation mode).
Слайд 13Безопасность в службе WWW
Веб-сервер IIS предоставляет несколько способов разграничения доступа
к сайтам и веб-приложениям. Служба WWW в составе IIS отличается
от других веб-серверов тем, что функции обеспечения безопасности в ней тесно интегрированы с системой Windows NT, на основе которой она работает.
Слайд 14Служба WWW поддерживает три основных метода аутентификации, то есть определения
личности пользователя по имени и паролю:
Базовая аутентификация (basic authentication) —
имя и пароль передаются по сети открытым текстом.
Сжатая аутентификация (digest authentication) — пароль обрабатывается хеш-функцией перед отправкой по сети, что делает невозможным его прочтение в случае перехвата злоумышленником.
Встроенная аутентификация Windows (integrated Windows authentication) — выполняется попытка входа на сервер с теми же учётными данными, под которыми работает браузер пользователя.
Слайд 15Реализация веб-приложений для IIS
Веб-сервер IIS поддерживает несколько различных технологий создания
веб-приложений:
ASP.NET — разработанная Microsoft технология;
ASP — предшествовавшая ASP.NET технология создания
динамических веб-страниц на основе сценариев. Входит в поставку IIS начиная с версии 3.0.
CGI — стандартная межплатформенная низкоуровневая технология создания динамических веб-страниц.
Слайд 16FastCGI — клиент-серверный протокол взаимодействия веб-сервера и приложения.
ISAPI — низкоуровневая
технология, аналогичная интерфейсу модулей Apache, предоставляющая полный доступ ко всем
возможностям IIS,
SSI — включение в одни страницы текста из других страниц.
Слайд 17Nginx
nginx (англ. engine x) (по-русски произносится как энджин-экс) — веб-сервер и
почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и
работа на FreeBSD, OpenBSD, Linux, Solaris, Mac OS X, AIX). Начиная с версии 0.7.52 появилась бинарная сборка под Microsoft Windows.
Слайд 18Основные функции
HTTP-сервер
обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов,
кеш дескрипторов открытых файлов
акселерированное проксирование без кэширования, простое распределение нагрузки
и отказоустойчивость
поддержка кеширования при акселерированном проксировании и FastCGI
акселерированная поддержка FastCGI и memcached серверов, простое распределение нагрузки и отказоустойчивость
модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, HTTP-аутентификация, SSI-фильтр
несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно
поддержка SSL
экспериментальная поддержка встроенного Perl
Слайд 19Архитектура
В nginx рабочие процессы обслуживают одновременно множество соединений, мультиплексируя их
вызовами операционной системы select, epoll (Linux) и kqueue (FreeBSD). Рабочие
процессы выполняют цикл обработки событий от дескрипторов (см. Событийно-ориентированное программирование).
Слайд 20nginx
содержит модуль географической классификации клиентов по IP-адресу. В его основу
входит база данных соответствия IP-адресов географическому региону, представленная в виде
Radix tree (сжатое префиксное дерево или сжатый бор) в оперативной памяти. nginx предварительно распределяет первые несколько уровней дерева, таким образом, чтобы они занимали ровно 1 страницу памяти. Это гарантирует, что при поиске IP-адреса для первых нескольких узлов при трансляции адреса всегда найдётся запись в TLB.