По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Прошло уже много времени с тех пор, как появился первый веб-сервер. На сегодняшний день есть довольно много разных интересных вариантов.
У разных проектов разные требования, но отрасль, занимающаяся веб-серверами с открытым исходным кодом, была практически монополистом. В течение долгого времени единственным веб-сервером был Apache, и справляться с большими нагрузками было довольно сложно. Благо, времена изменились, и появились новые решения для удовлетворения определенных потребностей.
Итак, давайте взглянем на некоторые из лучших и самых популярных веб-сервером с открытым исходным кодом, которые у нас есть на сегодняшний день.
Apache
Это практически синоним Всемирной паутины. До сих пор его поддерживает большая часть веб-сайтов, существующих в мире.
Есть три причины, по которой Apache так превалирует: открытая лицензия, ранний выпуск (он был выпущен еще в 1995 году!) и простое развертывание PHP. Последнее стало возможным за счет появления модуля
mod_php
, а значит, все, что вам нужно было сделать, чтобы разрабатывать на PHP, - установить Apache.
Что же делает Apache таким хорошим?
Доступен на всех платформах – Linux, Windows, MacOS и прочих.
Это стандартный сервер для всех виртуальных хостингов CPanel; это делает процесс настройки и модернизации сайта более простым.
Огромное количество функций, которые можно получить посредством установки модулей (которых также немало). Неважно насколько неопределенные ваши потребности, вы обязательно найдете модуль Apache, который вам подойдет.
Конфигурирование на уровне каталогов с помощью файлов .htaccess.
Поддержка HTTP/2, сжатия, статических файлов и балансировки нагрузки.
Режимы MPM и FastCGI для предоставления высокого уровня многопоточности.
Простое написание сценариев с помощью Lua.
Нужен ли вам Apache?
Если коротко, то да. Был период, когда Nginx (который мы будем рассматривать дальше) начал активно пользоваться успехом благодаря своей высокой производительности, но это было до того, как Apache выпустил версию 2.2 и догнал его. Как бы то ни было, как и все ранние участники, Nginx привлек много внимания, так что вы можете столкнуться с некоторой (необоснованной) критикой в адрес его возможностей.
Nginx
Если вам нравится верить всему, что вам говорят (или, если быть более политкорректным, следить за «последними» разработками), то, скорее всего, вы слышали о Nginx (произносится как «engine-x», что и было идеей, заложенной в названии). Он был выпущен в 2002 году. Это сделал русский инженер, который устал от того, что существовавшие на тот момент решения не могли справиться с проблемой C10k (попросту говоря, обработкой тысяч одновременный подключений).
Когда появился Nginx, он произвел на людей такое большое впечатление, что они забросили Apache и даже не вспоминали о нем. Эта тенденция присутствует и сегодня. Пока Apache, можно считать, находится где-то на номинальном уровне, Nginx предложил несколько сногсшибательных улучшений, которые помогли ему выиграть эту битву.
Асинхронная архитектура для того, чтобы справляться с высокой нагрузкой
Лучшие в своей категории возможности обработки статических файлов, балансировки нагрузки и обратного прокси-сервера.
Кэширование FastCGI.
Поддержка uwsgi, SCGI и прочих протоколов серверов с кэшированием.
Gzipping, преобразование изображений, байтовые диапазоны, ответы, разделенные на части, и т.д. в условиях потоковой передачей flv и mkv-файлов.
WebSocket, keepalive-сообщения, конвейерные соединения.
Контроль доступа, переадресация ошибок и т.д.
В итоге можно сказать, что Nginx – это локомотив с кучей различных функций, которые позволяют ему двигаться дальше на лидирующих позициях. Дочерняя компания – это устойчивый бизнес, а для сложных проектов доступна платная поддержка и консультации, которые для некоторых могут оказаться довольно полезными.
Нужен ли вам Nginx?
Если вам нравится проектировать веб-приложения, опираясь на свой вкус, то Nginx – это несомненный плюс. Помимо того, что Nginx можно использовать для непосредственной обработки статических файлов с использованием нескольких методов оптимизации, он позволяет проектировать сложные распределенные системы с мощным кэшированием, проксированием и балансировкой нагрузки.
Caddy
Caddy – это одна из популярнейших новых платформ, которая, определенно, наделала шуму в сообществе разработчиков открытого ПО.
Caddy можно сравнить с Nginx-подобным сервером (у него похожий синтаксис и все такое). Однако все в нем упрощено до безобразия. Например, для того, чтобы выполнить интеграцию Let’s Encrypt для SSL, вам нужно всего три строки в файле конфигурации.
Чем же Caddy привлек так много внимания?
HTTPS включен по умолчанию. Да, вам не нужно ничего делать для того, чтобы установить или обновить SSL-сертификаты.
Основное внимание уделяется HTTP/2.
По умолчанию меняет ключи удостоверения сеанса TLS-соединения. Таким образом, управление TLS-соединением, которое не подвержено таким уязвимостям, как Heartbleed, становится более безопасным.
Никаких зависимостей (это двоичная кодовая база, скомпилированная в Golang, которая не зависит ни от каких-либо основополагающих системных библиотек).
По умолчанию обрабатывает статические файлы в текущем каталоге!
Встраиваемый – можно использовать в других программах в качестве библиотеки.
Нужен ли вам Caddy?
Если вы хотите, чтобы все было просто, и хотите отделаться от бестолковых конфигураций, таких как в Apache или Nginx, то Caddy будет для вас как глоток свежего воздуха. Однако лучше всего он работает тогда, когда вы используете настройки по умолчанию (они, конечно, должны вас устраивать). Например, если вы хотите пользоваться услугами своего SSL-провайдера, иметь отдельный каталог для статических файлов (что почти всегда так и есть) и т.д., то Caddy теряет свои преимущества.
Lighthttpd
Единственный момент, в котором большая часть современных веб-серверов не оправдывают надежды пользователей, - использование ресурсов. Lighthttpd был разработан с целью справиться с этой проблемой в средах с низким объемом памяти и низкой загрузкой ЦП.
В основе Lighthttpd лежит модель асинхронной обработки запросов, что, по большому счету, похоже на то, как работает Nginx. Но есть одно «но» - Lighthttpd работает в одном потоке, а это значит, что если у вас более мощный компьютер, то он будет игнорировать другие ядра ЦП. Кроме того, он не может похвастаться такими необычными функциями, которые есть у Nginx, например, прокси-сервер SSL, HTTP/2 и т.д.
Нужен ли вам Lighthttpd?
Lighthttpd – это многофункциональный однопоточный веб-сервер, который в состоянии обрабатывать несколько сотен запросов в секунду и вместе с тем не злоупотреблять ресурсами. В остальном, ему особо нечего предложить в сравнении с альтернативными вариантами. Так что, пожалуй, если вам не очень нужны все эти излишества, и вы очень переживаете за то, как используются ресурсы компьютера, вам стоит изучить Lighthttpd.
OpenLiteSpeed
OpenLiteSpeed – это разновидность корпоративного веб-сервера с открытым исходным кодом, который предлагает компания LiteSpeed Technologies.
За что же стоит полюбить OpenLiteSpeed?
Совместимость с модулем Apache
mod_rewrite
, а это значит, что, если у вас есть куча готовых файлов Apache, миграция будет практически беспроблемной.
Событийно-управляемая архитектура в духе Nginx обеспечивает высокую пропускную способность.
Интерфейс администратора с графическим интерфейсом позволяет легко произвести настройку.
Собственный SAPI для PHP, который обеспечивает более высокую производительность.
По умолчанию применяются кэширование и оптимизация Google PageSpeed Insights.
Нужен ли вам OpenLiteSpeed?
OpenLiteSpeed имеет большое значение для веб-сайтов, ориентированных на наполнение и созданных с помощью WordPress, так как сервер подразумевает оптимизацию страниц. Он хорошо приспособлен для всего, что связано с производительностью PHP, кодовыми базами и проектами, основанными на PHP, соответственно, он может оказаться довольно полезным.
Cherokee
Cherokee – это проект, который был создан исключительно по желанию разработчика, но позже превратился в достойный веб-сервер. Несмотря на то, что он не может предложить таких же передовых функций, как у Nginx, он является простым, забавным и эффективным альтернативным вариантом типичным веб-серверам.
Самая большая победа для Cherokee заключается в его простоте – вам не нужно напрягаться и работать с командной строкой для того, чтобы настроить сервер. Он предлагает удобный веб-интерфейс, и он точно понравится тем, кто любит выполнять задачи по принципу «укажи и щелкни».
И несмотря на то, что Cherokee не так активно разрабатывается, он все еще отлично подходит для большинства обычных проектов. Попробуйте!
Заключение
Если бы не было веб-серверов, то наша жизнь не имела бы смысла, но, благо, сейчас у нас есть немало вариантов, чтобы выбрать.
Итак, чтобы корректно настроить QoS (Quality of Service), нам необходимо предварительно произвести небольшие расчеты. Предположим, в нашем офисе находятся 30 телефонных аппаратов, работающих по протоколу SIP под управление IP – АТС Asterisk. Мы предполагаем, что для одного телефонного разговора нужно 100 кбит полосы (с оверхедами). Тем самым, для 30 аппаратов нам потребуется полоса в 3 мбит (up/down). Все наша VoIP – инфраструктура живет в отдельном VLAN`e с подсетью 192.168.3.0/24. Приступаем к настройке.
Всегда рекомендует выносить VoIP инфраструктуру (PBX, телефоны, шлюзы) в отдельную подсеть. Это позволит проще сегментировать трафик обычной сети передачи данных и чувствительный к задержкам VoIP.
Настройка на Mikrotik | Маркировка пакетов
Настройки будем производить через утилиту управления Winbox. Открываем вкладку IP → Firewall и выбираем вкладку Mangle. Нажимаем на синий значок «+»:
Отлично. Далее мы создаем маркировку для соединения, приходящих из подсети 192.168.3.0/24 и отправленных внутрь этой подсети. Начнем с первой задачи. Указываем:
Chain - выбираем здесь prerouting;
Src. Address - указываем нашу подсеть;
Если ваши телефоны и IP – АТС Asterisk «живут» в той же подсети, что и рабочие станции (ПК), то укажите в качестве источника и назначения в маркировках IP – адрес Asterisk
Прыгаем на вкладку Action и указываем следующие параметры:
Action - мы делаем маркировку, поэтому выбираем mark connection;
New Connection Mark - маркируем как VoIP;
Passthrough - отмечаем галочкой;
Сохраняем изменения и нажимаем «ОК». Теперь нам необходимо сделать тоже самое, только на первом этапе, подсеть 192.168.3.0/24 мы укажем не в параметре Src. Address, а в Dst. Address. Все прочие опции делаем идентично проделанным шагам. В итоге у вас должно получиться вот так:
И добавляем финальный штрих к нашей конструкции – промаркируем пакеты, которые попадают под ранее созданные правила маркировки коннекций (соединений). Нажимаем на «+» и во вкладке General:
Chain - указываем prerouting;
Connection Mark - выбираем VoIP;
А во вкладке Action:
Action - делаем mark packet;
New Packet Mark - выбираем VoIP;
Passthrough - снимаем галочку с чекбокса;
Нажимаем «ОК» и сохраняем. Итого у нас получается:
Приоритеты и выделение полосы пропускания
На текущем этапе мы достаточно точно можем отделить VoIP – трафик от любого другого. Поэтому, создадим очередь обслуживания. Для этого, переходим в раздел Queues и нажимаем «+»:
Работаем со следующими параметрами:
Name - даем имя очереди - VoIP queue;
Target - укажите 0.0.0.0/0. Мы парсим данные на Mikrotik по маркированным пакета;
Max Limit - снимаем галочку с чекбокса;
Target Upload - 3M, как и говорили в начале статье;
Target Download - 3M, как и говорили в начале статье :);
Двигаем во вкладку Advanced:
Marks - выбираем из выпадающего списка VoIP;
Priority - выбираем для UP/DOWN 1 приоритет;
Теперь необходимо сделать очередь для остального трафика:
Name - даем имя очереди - Other traffic;
Target - указываем сеть, в которой живут наши рабочие станции (ПК) - в нашем случае 192.168.2.0/24;
Max Limit
Target Upload - 30M в нашем случае;
Target Download - 30M;
Прыгаем на вкладку Advanced:
Marks - выбираем no-mark, так как нас интересуют пакеты без маркировки;
Priority - выбираем 8 приоритет;
Тестирование
Проверяем. В очереди, переходим во вкладку Traffic в настройках VoIP очереди, делаем звонок и видим его график:
Полученную от маршрутизаторов «соседей» и других устройств в рамках сети роутер хранит в нескольких таблицах. Существует 3 типа таблиц:
Таблица соседей:
Хранит информацию от устройств подключенных напрямую. Вся собранная от соседей информация добавляется в таблицу соседей и включает наименования интерфейсов и соответствующих адресов. По умолчанию, “Hello” пакеты отправляются с интерфейсов каждые 5 секунд, чтобы быть уверенным, что сосед работает. Каждый EIGRP маршрутизатор хранит свой собственный экземпляр такой таблицы. Таким образом:
Каждый маршрутизатор имеет четкое представление о напрямую подключенных устройствах.
Каждый роутер располагает топологией сети в рамках своего ближайшего окружения.
Топологическая таблица:
Представляет собой набор из таблиц других EIGRP устройств полученных от соседей. Данная таблица представляет из себя список сетей назначения и соответствующих метрик. Выглядит данная таблица вот так:
При условии доступность устройств Successor и Feasible Successor они так же присутствуют в таблице для каждой из сетей. Каждый из пунктов маркируется буков A или P, что означает активное или пассивное состояние. Пассивное состояние говорит о том, что роутер знает маршрут к пункту назначения, в то время как активный означает, что топология изменилась и маршрутизатор обновляет данные для данного маршрута. Подчеркнем следующие позиции:
Для каждой из сетей назначения маршрутизатор хранит маршрут через Feasible Successor, т.е маршрут, который считается вторым по приоритету после маршрута через Successor.
Таблица маршрутизации:
Данная таблица представляет собой карту из всех известных маршрутов. Данная таблица строится на основании данных, полученных из топологической таблицы. Можно сказать, что указанные выше таблицы используются для количественной характеристики маршрутов, а таблица маршрутизации дает нам качественную характеристику. Что важно:
Только один маршрут через Successor попадает в таблицу маршрутизации и используется для отправки пакетов (в случае доступности).
Если маршрут через Successor оказывается недоступным, в таблицу маршрутизации из топологической таблицы копируется маршрут через Feasible Successor и используется в качестве альтернативного.
Что такое Successor?
Существует два главных типа устройств в сетях EIGRP. Оба устройства гарантируют отсутствие петель в сети:
Successor: Устройство, которое обеспечивает самую короткую дистанцию маршрута на пути пакета в сеть назначения. Другими словами, это устройство обеспечивает наилучший маршрут в сеть назначения.
Feasible Successor: Это устройство обеспечивает второй по приоритету маршрут в сеть назначения после маршрута Successor – устройства.
Типы пакетов EIGRP
EIGRP использует 5 типов пакетов:
Hello/ACKs пакеты: Это мультикаст пакеты, используемые для обнаружения и отслеживания состояния соседских устройств в сети. Любой Hello пакет должен получить подтверждение, или другими словами ответ – то есть ACK сообщение. Хочется отметить, что ACK пакет является юникастовым.
Updates: Надежные юникастовые пакеты, который содержат обновления маршрутной информации для построения/перестроения таблицы маршрутизации.
Queries: Мультикаст пакеты, которые отправляет устройство при переходе в активное состояние. Если пакет отправляется в качестве ответа, то он будет юникастовым.
Replies: Это надежные юникаст пакеты отправленные в ответ на queries пакеты. Данные пакет говорит получателю о том, что устройство Feasible Successor доступно и не должно переходить в активный режим.
Requests: Ненадежные мультикаст или юникаст пакеты, используемые для сбора информации от соседних устройств.
В следующей статье мы расскажем о сходимости EIGRP сетей.
