Разное

Apache server что это: Apache — ? Apache. FreeHost

14.02.2018

Содержание

Apache HTTP Server — Википедия. Что такое Apache HTTP Server

Apache HTTP-сервер (произносится /ə.ˈpæ.ʧi/, назван именем группы племён североамериканских индейцев апачей; кроме того, является искажённым сокращением от англ. a patchy server; среди русских пользователей общепринято переводное апа́ч) — свободный веб-сервер.

Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.

История

Сервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию «a patchy» (с англ. — «заплаточка»), так как он устранял ошибки популярного тогда сервера Всемирной паутины NCSA HTTPd 1.3. В дальнейшем, с версии 2.х, сервер был переписан заново и теперь не содержит кода NCSA. На данный момент разработка ведётся в ветке 2.2, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности. На текущий момент последняя версия ветки 2.4 — 2.4.23 (4 июля 2016) , для первой версии это 1.3.42.

Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты, среди которых СУБД Oracle и IBM WebSphere.

С апреля 1996 и до настоящего времени является самым популярным HTTP-сервером в Интернете. Статистика Netcraft показывает следующие данные об использовании Apache:

Apache имеет долю рынка в России до 17,45 %. Это самый популярный веб-сервер после NGINX с долей рынка 64,89 %

[11].

Архитектура

Ядро

Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов.

Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена.

Ядро Apache полностью написано на языке программирования C.

Система конфигурации

Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:

  • Конфигурация сервера (httpd.conf).
  • Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
  • Конфигурация уровня каталога (.htaccess).

Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.

Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).

Помимо этого, параметры могут быть заданы через ключи командной строки.

Мультипроцессорные модели (MPM)

Для веб-сервера Apache существует множество моделей симметричной мультипроцессорности. Вот основные из них:

НазваниеРазработчикПоддерживаемые OSОписаниеНазначениеСтатус
workerApache Software FoundationLinux, FreeBSDГибридная мультипроцессорно-мультипоточная модель. Сохраняя стабильность мультипроцессорных решений, она позволяет обслуживать большое число клиентов с минимальным использованием ресурсов.Среднезагруженные веб-серверы.Стабильный.
pre-forkApache Software FoundationLinux, FreeBSDMPM, основанная на предварительном создании отдельных процессов, не использующая механизм threads.Большая безопасность и стабильность за счёт изоляции процессов друг от друга, сохранение совместимости со старыми библиотеками, не поддерживающими threads.Стабильный.
perchildApache Software FoundationLinuxГибридная модель, с фиксированным количеством процессов.Высоконагруженные серверы, возможность запуска дочерних процессов используя другое имя пользователя для повышения безопасности.В разработке, нестабильный.
netwareApache Software FoundationNovell NetWareМультипоточная модель, оптимизированная для работы в среде NetWare.Серверы Novell NetWareСтабильный.
winntApache Software FoundationMicrosoft WindowsМультипоточная модель, созданная для операционной системы Microsoft Windows.Серверы под управлением Windows Server.Стабильный.
Apache-ITKSteinar H. GundersonLinux, FreeBSDMPM, основанная на модели prefork. Позволяет запуск каждого виртуального хоста под отдельными uid и gid.Хостинговые серверы, серверы, критичные к изоляции пользователей и учёту ресурсов.Стабильный.
peruserSean Gabriel HeacockLinux, FreeBSDМодель, созданная на базе MPM perchild. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. Не использует потоки.Обеспечение повышенной безопасности, работа с библиотеками, не поддерживающими threads.Стабильная версия от 4 октября 2007 года, экспериментальная — от 10 сентября 2009 года.

Система модулей

Apache HTTP Server поддерживает модульность. Существует более 500 модулей[12], выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками.

Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.

В модулях реализуются такие вещи, как:

Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в виде модуля Apache.

Механизм виртуальных хостов

Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое.

Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и guid.

Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.

Функциональные возможности

Интеграция с другим ПО и языками программирования

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

К ним относятся:

Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, Lua, sh, Java.

Безопасность

Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:

  • Ограничение доступа к определённым каталогам или файлам.
  • Механизм авторизации пользователей для доступа к каталогу на основе HTTP-аутентификации (mod_auth_basic) и digest-аутентификации (mod_auth_digest).
  • Ограничение доступа к определённым каталогам или всему серверу, основанное на IP-адресах пользователей.
  • Запрет доступа к определённым типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных.
  • Существуют модули, реализующие авторизацию через СУБД или PAM.

В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей.

Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя.

Для реализации шифрования данных, передающихся между клиентом и сервером используется механизм SSL, реализованный через библиотеку OpenSSL. Для удостоверения подлинности веб-сервера используются сертификаты X.509.

Существуют внешние средства обеспечения безопасности, например mod_security.

Интернационализация

Начиная с версии 2.0 появилась возможность определения сервером локали пользователя. Сообщения об ошибках и событиях, посылаемые браузеру, теперь представлены на нескольких языках и используют SSI-технологию.

Также, можно реализовать средствами сервера отображение различных страниц для пользователей с различными локалями. Apache поддерживает множество кодировок, в том числе Unicode, что позволяет использовать страницы, созданные в любых кодировках и на любых языках.

Обработка событий

Администратор может установить собственные страницы и обработчики для всех HTTP ошибок и событий, таких как 404 (Not Found) или 403 (Forbidden). В том числе существует возможность запуска скриптов и отображения сообщений на разных языках.

Server Side Includes

В версиях 1.3 и старше был реализован механизм Server Side Includes, позволяющий динамически формировать HTML-документы на стороне сервера.

Управлением SSI занимается модуль mod_include, включённый в базовую поставку Apache.

См. также

  • Список веб-серверов
  • LAMP — комплект из Linux, Apache, MySQL, PHP и пр.
  • WAMP— комплект из Windows, Apache, MySQL, PHP и пр.
  • MAMP— комплект из Mac OS, Apache, MySQL, PHP и пр.

Примечания

Литература

  • Скотт Хокинс. Администрирование веб-сервера Apache и руководство по электронной коммерции = Apache Web Server Administration and e-Commerce Handbook. — М.: Вильямс, 2001. — 336 с. — ISBN 0-13-089873-2.

Ссылки

Что такое Apache? Свободный веб-сервер Apache HTTP Server

Apache — мощный сервер, название которого происходит от английской фразы, связанной с названием племени североамериканских индейцев апачей. Среди русских пользователей имеет распространенное название «Апач». Это ПО с открытым исходным кодом с лицензией GPL. Одним из самых больших преимуществ его является кроссплатформенный сервер, то есть он может работать с различными операционными системами, поддерживая отличную производительность.

С 1996 года — это самый популярный сервер в мире благодаря его стабильности и безопасности. «Апач» разрабатывается сообществом пользователей-разработчиков, которое работает под руководством Apache Software Foundation.

История Apache

В марте 1989 года Тим Бернерс Ли, английский ученый, работающий в CERN (Швейцария), предложил новый способ управления огромным количеством информации в проектах CERN. В то время никто не знал, что такое Apache. Первичная разработка сети документов с гиперссылками, как их назвал Тед Нельсон в 1965 году, привела к созданию WWW — первого программного обеспечения, которое вышло в ноябре 1990 года под названием World Wide Web, с веб-браузером, графическим интерфейсом и редактором WYSIWYG. Два года спустя в списке WWW-серверов было всего около тридцати записей, среди которых был HTTPs NCSA.

Настоящая история «Апач» начинается в марте 1995 года с выпуском Apache 0.2 на основе сервера NCSA HTTPD 1.3. Многим пользователям интересно знать, что такое Apache сегодня и что программа представляла из себя в первые месяцы своего существования. Это был всего лишь набор правок, применяемых к серверу NCSA. Далее Роберт Тау выпустил Shambhala 0.1 с API для модулей, которые оказались очень успешными.

Крупнейшими вехами проекта было полное соответствие стандарту HTTP 1.1, включенному в апреле 1997 года в версию 1.2. В эту версию уже была включена платформа Windows NT, которая стартовала в июле 1997 года. Объединение файлов конфигурации было реализовано в выпуске 1.3.3.

Apache Group отвечает за эволюцию веб-сервера и конкретные решения по разработке. Эту группу следует отличать от разработчиков ядра — Core group. Добровольный характер большинства разработчиков делает маловероятным то, что все они одновременно активны в «Апач», поэтому ядро отвечает за постоянную работоспособность. В общем, решения, которые должны принимать разработчики, принадлежат ядру и ограничиваются голосованием за включение кода. С другой стороны, они обычно имеют право на запись в репозиторий CVS, поэтому служат воротами для кода, обеспечивая его правильность и качество.

Минимальные требования и преимущества

Apache получил широкое признание в сети, с 1996 года он является наиболее часто используемым HTTP-сервером. Достигнул своей максимальной доли рынка в 2005 году, когда сервер использовался на 70 % сайтов во всем мире. В последние годы его доля на рынке сократилась. Примечательно то, что для Apache такой спад не свидетельствует о непопулярности и деградации технологии.

Минимальные требования для эксплуатации:

  1. Процессор – Pentium.
  2. Оперативная память — 64 Мб.
  3. ОС-Microsoft Windows, GNU/Linux.
  4. Размер установки- 50 Мб.

Преимущества:

  1. Модульная конструкция.
  2. Открытый исходный код.
  3. Мультиплатформенная конструкция.
  4. Растяжимость.
  5. Популярность — легко получить помощь и поддержку.

Архитектура сервера

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

  1. mod_ssl — безопасная связь через TLS;
  2. mod_rewrite — перезапись адреса, обычно используется для преобразования динамических страниц, таких как php, в статические, чтобы обмануть поисковые системы относительно того, где они были разработаны;
  3. mod_dav — поддержка протокола WebDAV (RFC 2518) ;
  4. mod_deflate — алгоритм сжатия прозрачен, когда содержимое отправляется клиенту;
  5. mod_auth_ldap — позволяет пользователям проходить аутентификацию на сервере LDAP;
  6. mod_proxy_ajp — соединитель для связи с Jakarta Tomcat динамических страниц в Java (сервлеты и JSP).

Базовый сервер может быть расширен за счет включения внешних модулей, среди которых:

  • mod_cband — управление трафиком и ограничение полосы пропускания;
  • mod_perl — динамические в Perl;
  • mod_php — динамические в PHP;
  • mod_python — динамические в Python;
  • mod_rexx — динамические в REXX и объект REXX;
  • mod_ruby — динамические в Ruby;
  • mod asp dot net — динамические в Microsoft.NET;
  • mod_mono — динамические в моно;
  • mod_security — фильтрация на уровне приложения для безопасности.

Конфигурация и безопасность

Для того чтобы понять, что такое Apache в свете безопасности, нужно рассмотреть его конфигурацию. Большая часть конфигурации выполняется в файле apache2.conf и httpd.conf, в зависимости от системы, в которой ПО работает. Любое изменение этого файла требует перезапуска сервера или повторного принудительного чтения.

Лицензия на программное обеспечение, по которой распространяется базовое ПО «Апач», является отличительной частью истории Apache HTTP Server и сообщества открытого исходного кода. Лицензия позволяет распространять продукты с открытым и закрытым исходным кодом.

Фонд свободного ПО не считает таковым Apache License, совместимого с версией 2 GNU General Public License (GPL), в которой программное обеспечение лицензируется и не интегрировано с ПО. Это нужно учитывать, перед тем как настроить веб-сервер Apache, распространяемого под лицензией GPL. Тем не менее версия 3 GPL включает в себя положение, которое позволяет ему быть совместимым с лицензиями, имеющими оговорки о патентном возмещении.

Большинство обнаруженных и устраненных уязвимостей безопасности могут быть использованы только локальными пользователями, а не удаленно. Однако некоторые все же запускаются удаленно в определенных ситуациях. Или если они используются злонамеренными локальными пользователями для нарушения соглашений о совместном хостинге, использующего PHP в качестве модуля свободного веб-сервера Apache.

Проверка функционирования Апач

Чтобы убедиться, что «Апач» работает правильно, открывают веб-браузер и прописывают следующий адрес: http: // localhost. Затем нажимают Enter, появляется белая страница с сообщением «Это работает», что является доказательством того, что веб-сервер работает отлично.

«Апач» позволяет создавать специальные конфигурации для настройки и адаптации к потребностям. Для этого находят файл http.conf в C: appserv Apache2.2 conf. Создается его резервная копия, чтобы избежать ошибок выполнения, затем его открывают посредством любого редактора и изменяют нужные строки.

Чтобы правильно выполнить эти действия, нужно хорошо знать Apache worker, поскольку любые сделанные изменения будут отражены в производительности и запуске «Апач». Благодаря последним рекомендациям сервер будет установлен. Работать он будет в базовой конфигурации, которая позволяет загружать страницы или сетевые приложения в интернет.

Управление информацией

Apache — наиболее используемый веб-сервер, лидер с наибольшим количеством установок в мире, намного опережающий другие решения, такие как Microsoft Internet Information Server (IIS). Этот проект открыт для использования, так как он мультиплатформенный, имеющий версии для всех основных операционных систем, очень надежный и выделяющийся своей безопасностью и производительностью.

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

  1. Эффективность запросов.
  2. Большое количество HTTP-запросов, включая многозадачное выполнение, может оставить сервис свернутым.
  3. Ограничения на доступ к файлам, управления аутентификации пользователей или фильтрации запросов в соответствии с их происхождением.
  4. Обработка ошибок по страницам с информацией посетителя и перенаправлением на заранее определенные страницы.
  5. Управление информацией, подлежащей передаче в соответствии с ее форматом, и адекватное информирование браузера, запрашивающего указанный ресурс.
  6. Журнал управления для хранения полученных запросов, произошедших ошибок и в целом всей информации, которая зарегистрирована и проанализирована для получения статистики доступа к сайту.

«Апач» позволяет настраивать виртуальный хостинг на основе IP-адресов или имен, то есть иметь несколько веб-сайтов на одном компьютере.

Файл apache2.conf

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

Он находится в каталоге /etc /apache2, и, поскольку это текстовый файл, его можно легко редактировать с помощью текстового редактора. Свойства файла конфигурации — глобальные переменные сервера и расширение функциональности.

Глобальные переменные сервера — это переменные, которые определяют общее функционирование:

  1. Таблица директив «Апач». Имя сервера обозначено переменной ServerName, поэтому любое перенаправление или ссылка, существующие в HTML-документах, работают хорошо. Большинство переменных конфигурации распределены среди других небольших файлов, хранящихся в mods-available.
  2. .htaccess — это скрытый текстовый файл, который позволяет настроить работу сервера.
  3. «Апач» — конкретный каталог без необходимости изменять основной файл конфигурации apache2.conf. Когда веб-клиент запрашивает файл с сервера, он смотрит из корневого каталога в подкаталог, содержащий запрошенный для .htaccess, и принимает во внимание содержащиеся в нем директивы перед выполнением запроса.

Принцип .htaccess:

  1. Запрещает перечисление файлов в каталоге.
  2. Перенаправляет веб-трафик.
  3. Настраивает страницы ошибок.
  4. Ограничивает доступ к определенным файлам.
  5. Запрещает доступ к определенным IP-адресам или диапазонам IP-адресов.
  6. Расширяет функциональность, что связано с вызовами других модулей и файлами конфигурации. Всем директивам, связанных с этим пунктом, будет предшествовать слово «Включить».

Установка веб-сервера Apache

«Апач» изначально был разработан для работы с технологией PHP, но без проблем может работать и с .NET, что делает его более успешным по сравнению с IIS Microsoft, являющимся коллаборантом для серверов, использующих IIS, и обеспечивающим полную поддержку PHP без необходимости изменять конфигурацию.

Чтобы установить и запустить веб-сервер, в первую очередь необходимо загрузить его с официального сайта. Всегда находят самую последнюю версию доступного программного обеспечения и проверяют, будет ли она идентифицирована, как Win32 Binary, включая OpenSSL.

Версия имеет встроенную установку и систему защиты данных. После выбора ее загружают на ПК. Дважды нажимают по значку файла, чтобы запустить процесс, который прост, так как сопровождаться помощником.

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

Далее появится окно установки, где указаны все доступные компоненты. Выбирают их все и проверяют, наличие папки c: appserv Apache2.2. Далее выполняют настройку веб-сервера Apache.

Веб-Monitor на панели задач

После установки Apache убеждаются, что она была выполнена правильно. Для этого переходят в меню «Пуск» и находят опцию «Выполнить». Появится всплывающее окно, в котором вводят cmd, возникает всплывающий экран системы. Чтобы убедиться, что пользователь работает в качестве администратора, нажимают правой кнопкой мыши по окну и выбирают «Выполнить от имени администратора».

Алгоритм установки:

  1. В консоли Windows находят папку bin Apache, для этого прописывают следующее предложение в консоли — c: appserv Apache2.2? in.
  2. После ввода нажимают Enter и системный компонент, который будет выглядит так — C: appserv Apache2.2? In>.
  3. Находясь в папке bin, вводят http: .exe -k install и нажимают Enter.
  4. Появиться сообщение, похожее на «.Apache 2.2: служба уже установлена». Это сообщение проверит, что «Апач» был успешно установлен.

Один из наиболее эффективных способов проверить правильность работы Apache — установить, активен ли монитор приложения. Его можно увидеть на панели задач. Если он неактивен, активируют его, переходя в меню «Пуск», раздел «Все программы» и Apache http Server 2.2., нажимают на Monitor Apache Server и активируют его.

Монитор полезен, потому что он позволяет останавливать сервер, приостанавливать и активировать его с полным комфортом, не заходя в окно консоли, просто нажав на значок на панели задач, чтобы открыть окно управления.

Советы по установке в Linux

Если у пользователя есть сайт и нужна платформа для его размещения, можно воспользоваться услугами одного из хостинг-провайдеров либо попробовать самостоятельно разместить свой сайт на сервере.

Алгоритм установки:

  1. Скачивают последнюю стабильную версию «Апач».
  2. Загружают исходные файлы, соответствующие системе.
  3. Извлекают файлы ПО.
  4. После того загруженные файлы нужно будет распаковать:gunzip -d httpd-2_0_NN.tar.gz; tar xvf httpd-2_0_NN.tar.
  5. Это создает новый каталог в текущем каталоге с исходными файлами.
  6. Как только появятся файлы, указывают машине, где найти все исходные. Самый простой способ сделать это — принять все значения по умолчанию и просто набрать: ./configure.
  7. Настраивают Apache при условии, что не было никаких проблем с установкой и сборкой. Пользователь настраивает конфигурацию, что равносильно редактированию файла httpd.conf. Он обычно редактируется с текстовым редактором- vi PREFIX /conf/httpd.conf. Для внесения любых изменений нужно быть пользователем root.
  8. Проверяют работу сервера.

Применение в World Wide Web

Apach используется в основном для отправки статических и динамических страниц в World Wide Web. Многие приложения разработаны с учетом среды реализации «Апач» или будут использовать характеристики этого сервера. Apach — компонент сервера в популярной платформе приложений LAMP наряду с языками программирования MySQL и PHP, Perl , Python и Ruby, включая базу данных Oracle и сервер приложений IBM WebSphere. Mac OS X интегрирует его как часть собственного web-server и поддержку приложений WebObjects.

Apache используется для многих других задач, когда контент должен быть доступен безопасным и надежным способом. Например, при совместном использовании файлов с персонального компьютера в интернет. Пользователь, у которого на рабочем столе установлен «Апач», может произвольно размещать файлы в корне документов, откуда они могут стать общими.

Разработчики веб-приложений иногда используют локальную версию Apache для предварительного просмотра и тестирования кода во время разработки. Microsoft Internet Information Services (IIS) является основным конкурентом «Апач», а также веб-сервером Sun Java System от Sun Microsystems и множеством других приложений, таких как Zeus Web-Server.

Некоторые из крупнейших сайтов в мире работают на Apache. Внешний интерфейс поисковой системы Google основан на ее модифицированной версии, которая называется Google веб-сервер (GWS). Многие проекты «Википедии» также работают на серверах «Апач».

Apache — это… Что такое Apache?

Apache HTTP-сервер (произносится /ə.ˈpæ.ʧi/, назван именем группы племён североамериканских индейцев апачей; кроме того, является сокращением от англ. a patchy server; среди русских пользователей общепринято искажённое апа́ч) — свободный веб-сервер.

Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.

История

Сервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию «a patchy» (англ. «заплаточка»), так как он устранял ошибки популярного тогда сервера Всемирной паутины NCSA HTTPd 1.3. В дальнейшем, с версии 2.х сервер был переписан заново и теперь не содержит кода NCSA, но имя осталось. На данный момент разработка ведётся в ветке 2.2, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности. На текущий момент последняя версия ветки 2.4 — 2.4.3 (21 августа 2012), для первой версии это 1.3.42.

Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многие программные продукты, среди которых СУБД Oracle и IBM WebSphere.

С апреля 1996 и до настоящего времени является самым популярным HTTP-сервером в Интернете. Статистика Netcraft показывает следующие данные об использовании Apache:

Архитектура

Ядро

Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов.

Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена.

Ядро Apache полностью написано на языке программирования C.

Система конфигурации

Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:

  • Конфигурация сервера (httpd.conf).
  • Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
  • Конфигурация уровня директории (.htaccess).

Имеет собственный язык конфигурационных файлов, основанный на блоках директив. Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть до управления MPM. Большая часть модулей имеет собственные параметры.

Часть модулей использует в своей работе конфигурационные файлы операционной системы (например /etc/passwd и /etc/hosts).

Помимо этого, параметры могут быть заданы через ключи командной строки.

Мультипроцессорные модели (MPM)

Для веб-сервера Apache существует множество моделей симметричной мультипроцессорности. Вот основные из них:

НазваниеРазработчикПоддерживаемые OSОписаниеНазначениеСтатус
workerApache Software FoundationLinux, FreeBSDГибридная мультипроцессорно-мультипоточная модель. Сохраняя стабильность мультипроцессорных решений, она позволяет обслуживать большое число клиентов с минимальным использованием ресурсов.Среднезагруженные веб-серверы.Стабильный.
pre-forkApache Software FoundationLinux, FreeBSDMPM, основанная на предварительном создании отдельных процессов, не использующая механизм threads.Большая безопасность и стабильность за счёт изоляции процессов друг от друга, сохранение совместимости со старыми библиотеками, не поддерживающими threads.Стабильный.
perchildApache Software FoundationLinuxГибридная модель, с фиксированным количеством процессов.Высоконагруженные серверы, возможность запуска дочерних процессов используя другое имя пользователя для повышения безопасности.В разработке, нестабильный.
netwareApache Software FoundationNovell NetWareМультипоточная модель, оптимизированная для работы в среде NetWare.Серверы Novell NetWareСтабильный.
winntApache Software FoundationMicrosoft WindowsМультипоточная модель, созданная для операционной системы Microsoft Windows.Серверы под управлением Windows Server.Стабильный.
Apache-ITKSteinar H. GundersonLinux, FreeBSDMPM, основанная на модели prefork. Позволяет запуск каждого виртуального хоста под отдельными uid и gid.Хостинговые серверы, серверы, критичные к изоляции пользователей и учёту ресурсов.Стабильный.
peruserSean Gabriel HeacockLinux, FreeBSDМодель, созданная на базе MPM perchild. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. Не использует потоки.Обеспечение повышенной безопасности, работа с библиотеками, не поддерживающими threads.Стабильная версия от 4 октября 2007 года, экспериментальная — от 10 сентября 2009 года.

Система модулей

Apache HTTP Server поддерживает модульность. Существует более 500 модулей[5], выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками.

Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.

В модулях реализуются такие вещи, как:

Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в виде модуля Apache.

Механизм виртуальных хостов

Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое.

Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и guid.

Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.

Функциональные возможности

Интеграция с другим ПО и языками программирования

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

К ним относятся:

Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++, Lua, sh, Java.

Безопасность

Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:

  • Ограничение доступа к определённым директориям или файлам.
  • Механизм авторизации пользователей для доступа к директории на основе HTTP-аутентификации (mod_auth_basic) и digest-аутентификации (mod_auth_digest).
  • Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей.
  • Запрет доступа к определённым типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных.
  • Существуют модули, реализующие авторизацию через СУБД или PAM.

В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей.

Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя.

Для реализации шифрования данных, передающихся между клиентом и сервером используется механизм SSL, реализованный через библиотеку OpenSSL. Для удостоверения подлинности веб-сервера используются сертификаты X.509.

Существуют внешние средства обеспечения безопасности, например mod_security.

Интернационализация

Начиная с версии 2.0 появилась возможность определения сервером локали пользователя. Сообщения об ошибках и событиях, посылаемые браузеру, теперь представлены на нескольких языках и используют SSI технологию.

Также, можно реализовать средствами сервера отображение различных страниц для пользователей с различными локалями. Apache поддерживает множество кодировок, в том числе Unicode, что позволяет использовать страницы, созданные в любых кодировках и на любых языках.

Обработка событий

Администратор может установить собственные страницы и обработчики для всех HTTP ошибок и событий, таких как 404 (Not Found) или 403 (Forbidden). В том числе существует возможность запуска скриптов и отображения сообщений на разных языках.

Server Side Includes

В версиях 1.3 и старше был реализован механизм Server Side Includes, позволяющий динамически формировать HTML-документы на стороне сервера.

Управлением SSI занимается модуль mod_include, включённый в базовую поставку Apache.

См. также

Примечания

Литература

  • Скотт Хокинс. Администрирование веб-сервера Apache и руководство по электронной коммерции = Apache Web Server Administration and e-Commerce Handbook. — М.: Вильямс, 2001. — 336 с. — ISBN 0-13-089873-2

Ссылки

 Просмотр этого шаблона Apache Software Foundation
Проекты верхнего уровняActiveMQ • Ant • Apache HTTP Server • APR • Beehive • Cassandra • Cayenne • Camel • Commons • Cocoon • CouchDB  • DB • Directory • Excalibur • Forrest • Geronimo • Gump • Hadoop • Harmony • HBase • HiveMind • HttpComponents • iBATIS • Jackrabbit • James • JMeter • Lenya • Maven • Mina • mod perl • MyFaces • Nutch • OFBiz • OpenOffice.org • POI • Portals • Santuario • ServiceMix • Shale • Shiro • SpamAssassin • Struts • Subversion • Tapestry • Tcl • Tomcat • Turbine • Velocity • WebWork 2 • Wicket • Xalan • Xerces • XMLBeans
Подпроекты
Apache Web ServicesAxis • Axis2  • CXF  • WS-Commons • EWS • JaxMe • jUDDI • Kandula • Mirae • Muse • Pubscribe • Sandesha • Scout • SOAP • Synapse • TSIK • Tuscany • Woden • WSIF  • WSRF • WSS4J • XML-RPC
Другие проектыBatik • FOP •Log4j
Развивающиеся проекты (Incubator)XAP • River • OpenEJB • OpenJPA • Graffito • Tuscany • Log4Net • Roller • Felix • Abdera • CeltiXfire • FtpServer • Heraldry • Ivy • JuiCE • Kabuki • Lokahi • Lucene.Net • mod_ftp • NMaven • Ode • stdcxx • Woden • WSRP4J • Yoko • WADI • Qpid • stdcxx • TripleSoup • UIMA• Adobe Flex
Списанные проекты (Attic)AxKit • Cactus • ECS • Jakarta • ORO • Regexp • Slide • Taglibs
Лицензия: Лицензия Apache • Сайт: apache.org

Apache vs Nginx: практический взгляд / Хабр

Введение


Apache и Nginx — 2 самых широко распространенных веб-сервера с открытым исходным кодом в мире. Вместе они обслуживают более 50% трафика во всем интернете. Оба решения способны работать с разнообразными рабочими нагрузками и взаимодействовать с другими приложениями для реализации полного веб-стека.

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

Общий обзор


Прежде чем погрузиться в различия между Apache и Nginx давайте бегло взглянем на предысторию каждого из этих проектов.

Apache


Apache HTTP Server был разработан Робертом Маккулом в 1995 году, а с 1999 года разрабатывается под управлением Apache Software Foundation — фонда развития программного обеспечения Apache. Так как HTTP сервер это первый и самый популярный проект фонда его обычно называют просто Apache.

Веб-север Apache был самым популярным веб-сервером в интернете с 1996 года. Благодаря его популярности у Apache сильная документация и интеграция со сторонним софтом.

Администраторы часто выбирают Apache из-за его гибкости, мощности и широкой распространенности. Он может быть расширен с помощью системы динамически загружаемых модулей и исполнять программы на большом количестве интерпретируемых языков программирования без использования внешнего программного обеспечения.

Nginx


В 2002 году Игорь Сысоев начал работу над Nginx для того чтобы решить проблему C10K — требование к ПО работать с 10 тысячами одновременных соединений. Первый публичный релиз был выпущен в 2004 году, поставленная цель была достигнута благодаря асинхронной event-driven архитектуре.

Nginx начал набирать популярность с момента релиза благодаря своей легковесности (light-weight resource utilization) и возможности легко масштабироваться на минимальном железе. Nginx превосходен при отдаче статического контента и спроектирован так, чтобы передавать динамические запросы другому ПО предназначенному для их обработки.

Администраторы часто выбирают Nginx из-за его эффективного потребления ресурсов и отзывчивости под нагрузкой, а также из-за возможности использовать его и как веб-сервер, и как прокси.

Архитектура обработки соединений


Одно из самых существенных отличий между Apache и Nginx состоит в том как они обрабатывают соединения и отвечают на различные виды трафика.

Apache


Apache предоставляет несколько модулей мультипроцессинга (multi-processing modules, MPM), которые отвечают за то как запрос клиента будет обработан. Это позволет администраторам определять политику обработки соединений. Ниже представлен список MPM-модулей Apache:
  • mpm_prefork — этот модуль создает по одному процессу с одним потоком на каждый запрос. Каждый процесс может обрабатывать только одно соединение в один момент времени. Пока число запросов меньше числа процессов этот MPM работает очень быстро. Однако производительность быстро падает когда число запросов начинает превосходить число процессов, поэтому в большинстве случаев это не самый лучший выбор. Каждый процесс потребляет значительный объем RAM, поэтому этот MPM сложно поддается масштабированию. Но он может быть использован вместе с компонентами, которые не созданы для работы в многопоточной среде. Например, PHP не является потокобезопасным, поэтому этот MPM рекомендуется использовать как безопасный метод работы с mod_php.
  • mpm_worker — этот модуль создает процессы, каждый из которых может управлять несколькими потоками. Каждый поток может обрабтывать одно соединение. Потоки значительно более эффективны чем процессы, что означает что mpm_worker масштабируется значительно лучше чем mpm_prefork. Так как потоков больше чем процессов это означает, что новое соединение может быть сразу обработано свободным потоком, а не ждать пока освободится процесс.
  • mpm_event — этот модуль похож на mpm_worker, но оптимизрован под работу с keep-alive соединениями. Когда используется mpm_worker соединение будет удерживать поток вне зависимости от того активное это соединение или keep-alive. Mpm_event выделяет отдельные потоки для keep-alive соединений и отдельные потоки для активных соединений. Это позволяет модулю не погрязнуть в keep-alive соединениях, что необходимо для быстрой работы. Этот модуль был отмечен как стабильный в Apache версии 2.4.

Как вы можете видеть Apache предлагает гибкие возможности для выбора различных алгоритмов обработки соединений и запросов.

Nginx


Nginx появился на сцене позднее Apache, по этой причине, его разработчик был лучше осведомлен о проблемах конкурентности, с которыми сталкиваются сайты при масштабировании. Благодаря этим знаниям Nginx изначально был спроектирован на базе асинхронных неблокирующих event-driven алгоритмов.

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

Каждое соединение, обрабатываемое воркером, помещается в event loop вместе с другими соединениями. В этом цикле события обрабатываются асинхронно, позволяя обрабатывать задачи в неблокирующей манере. Когда соединение закрывается оно удаляется из цикла.

Этот подход к обработке соединений позволяет Nginx’у невероятно масштабироваться при ограниченных ресурсах. Поскольку сервер однопоточный и он не создает процессы под каждое соединение, использование памяти и CPU относительно равномерно, даже при высоких нагрузках.

Статический и динамический контент


Если рассматривать жизненные примеры, то основные различия между Apache и Nginx в том как они обрабатывают запросы к статическому и динамическому контенту.

Apache


Apache может раздавать статический контент используя стандартные file-based методы. Производительность таких операций зависит от выбранного MPM.

Apache также может раздавать динамический контент встраивая интерпретатор нужного языка в каждого воркера. Это позволяет обрабатывать запросы к динамическому содержимому средствами самого веб-сервера и не полагаться на внешние компоненты. Интерпретаторы языков могут быть подключены к Apache с помощью динамически загружаемых модулей.

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

Nginx


Nginx не имеет возможности самостоятельно обрабатывать запросы к динамическому контенту. Для обработки запросов к PHP или другому динамическому контенту Nginx должен передать запрос внешнему процессору для исполнения, подождать пока ответ будет сгенерирован и получить его. Затем результат может быть отправлен клиенту.

Для администраторов это означает, что нужно настроить взаимодействие Nginx с таким процессором используя один из протоколов, который известен Nginx’у (http, FastCGI, SCGI, uWSGI, memcache). Это может немного усложнить процесс настройки, в особенности когда вы будете пытаться предугадать какое число соединений разрешить, так как будет использоваться дополнительное соединение с процессором на каждый пользовательский запрос.

Однако, этот метод имеет и свои преимущества. Так как интерпретатор не встроен в каждого воркера, то оверхед, связанный с этим, будет иметь место только при запросах к динамическому контенту. Статический контент будет возвращен клиенту простым способом и запросы к интерпретатору будут выполняться только тогда когда они нужны. Apache тоже может работать в такой манере, но тогда это лишит его всех преимуществ описанных в предыдущем разделе.

Распределенная конфигурация против централизованной


Для администраторов одним из очевидных отличий этих двух веб-серверов является наличие у Apache возможности задавать конфигурацию на уровне директории.

Apache


Apache имеет опцию, которая позволяет включить конфигурирование на уровне директорий. Если эта опция включена, то Apache будет искать конфигурационные директивы в директориях с контентом в специальных скрытых файлах, которые называются .htaccess.

Так как такие конфигурационные файлы находятся в директриях с контентом, Apache вынужден при обработке каждого запроса проверять не содержит ли каждый компонент запрашиваемого пути файл .htaccess и исполнять директивы в найденных файлах. Это позволяет децентрализовать конфигурирование веб-сервера, что позволяет реализовать на уровне директорий модификацию URL’ов (URL rewrite), ограничения доступа, авторизацию и аутентификацию и даже политики кеширования.

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

Это дает простой способ таким приложениям как системы управления контентом (CMS) конфигурировать собственное окружение не имея доступа к конфигурационному файлу веб-сервера. Это также может быть использовано шаред хостингами, чтобы сохранить контроль над основным конфигурационным файлом и дать клиентам контроль над конфигурацией определенных директорий.

Nginx


Nginx не интерпретирует файлы .htaccess и не предоставляет механизм конфигурирования на уровне директорий за пределами основного конфигурационного файла. Этот подход может показаться менее гибким чем в случае с Apache, но он имеет свои преимущства.

Основное преимущество перед использованием .htaccess — это улучшенная производительность. Типичная установка Apache позволяет использовать файлы .htaccess в любой директории, поэтому веб-сервер при каждом запросе вынужден проверять наличие этого файла во всех родительских директориях запрошенного файла. Если найден один или более таких файлов, то все они должны быть прочитаны и интерпретированы.

Так как Nginx не позволяет переопределять конфиги на уровне директорий, он может обрабатывать запросы быстрее, ведь ему достаточно сделать один directory lookup и прочитать один конфигурационный файл на каждый запрос (предполагается, что файл найден там где он должен быть по соглашению).

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

Имейте ввиду, что вы можете отключить поддержку .htaccess в Apache, если сказанное выше произвело на вас впечатление.

Интерпретация базирующаяся на файлах и URI


То как веб-сервер интерпретирует запрос и сопоставляет его с ресурсом в системе это еще одна отличительная особенность в этих двух серверах.

Apache


Apache имеет возможность интерпретировать запрос как физический ресурс в файловой системе или как URI, который требует дополнительной обработки. Первый тип запросов использует конфигурационные блоки <Directory> или <File>, второй — блоки <Location>.

Так как Apache изначально был спроектирован как веб-сервер, он по умолчанию интерпретирует запросы как ресурсы в файловой системе. Он берет document root веб-сервера и дополняет его частью запроса, которая следует за именем хоста и номером порта, чтобы найти запрашиваемый файл. В общем случае, иерархия файловой системы представленная в вебе доступна как дерево документов.

Apache предоставляет ряд альтернатив на случай когда запрос не соответствует файлу в файловой системе. Использование блоков <Location> это метод работы с URI без отображения на файловую систему. Также возможно использовать регулярные выражения, которые позволяют задать более гибкие настройки для всей файловой системы.

Так как Apache может оперировать и c файловой системой, и с webspace, то он в основном опирается на методы работы с файловой системой. Это видно в некоторых решениях в дизайне архитектуры веб-сервера, например, в использовании файлов .htaccess для конфигурирования на уровне директорий. Документация к Apache не рекомендует использовать URI-блоки для ограничения доступа для запросов к файловой системе.

Nginx


Nginx создан, чтобы работать и в качестве веб-сервера, и в качестве прокси-сервера. По этой причине он работает в первую очередь с URI, транслируя их при необходимости в запросы к файловой системе.

Эта особенность прослеживается в том как для Nginx конструируются и интерпретируются конфигурационные файлы. В Nginx нет способа создать конфигурацию для заданной директории, вместо этого он парсит URI.
Например, основными конфигурационными блоками в Nginx являются <server> и <location>. В блоке <server> определяется хост, который будет обслуживаться, блок <location> отвечает за обработку части URI, которая идет после имени хоста и номера порта. Таким образом, запрос интерпретируется как URI, а не как путь в файловой системе.

В случае запросов к статическим файлам все запросы должны быть отображены (mapped) на путь в файловой системе. Сначала Nginx выбирает блоки server и location, которые будут использованы для обработки запроса и затем объединяет document root с URI, в соответствии с конфигурацией.

Эти подходы (интерпретация запроса как пути в файловой системе и как URI) могут показаться похожими, но тот факт что Nginx рассматривает запросы как URI, а не как пути в файловой системе позволяет ему легче справляться одновременно и с ролью веб-сервера, и с ролью прокси. Nginx конфигурируется так, чтобы отвечать на различные шаблоны запросов. Nginx не обращается к файловой системе до тех пор пока он не готов обслужить запрос, что объясняет почему он не реализует ничего похожего на файлы .htaccess.

Модули


И Apache, и Nginx могут быть расширены при помощи системы модулей, но способы реализации модульной системы принципиально отличаются.

Apache


Система модулей Apache позволяет динамически загружать и выгружать модули, чтобы удовлетворить ваши потребности, в то время как ваш сервер запущен. Ядро Apache всегда доступно, в то время как модули можно включать и выключать, чтобы добавить или удалить функциональность из основного сервера.

Apache использует эту функциональность для решения широкого круга задач. Благодаря зрелости платформы существует огромное множество модулей, которые могут изменять ключевые особенности сервера, например модуль mod_php позволяет включать PHP-интерпретатор в кажого воркера.

Использование модулей не ограничивается лишь обработкой динамических запросов. Среди других возможностей модулей: изменение URL’ов (URL rewrite), аутентификация клиентов, защита сервера, логгирование, кеширование, сжатие, проксирование, ограничение частоты запросов, шифрование. Динамические модули могут значительно расширить функцональность ядра.

Nginx


Nginx тоже имеет систему модулей, но она сильно отличается от подхода используемого в Apache. В Nginx модули загружаются не динамически, а должны быть выбраны и скомпилированы с ядром сервера.

Для многих пользователей по этой причине Nginx кажется менее гибким. Это особенно относится к пользователям, кто имеет мало опыта ручной сборки приложений и предпочитают использовать системы управления пакетами. Обычно разработчики дистрибутивов стремятся создать пакеты для всех часто используемых модулей, но если вам нужен какой-то нестандартный модуль вам придется собрать его из исходников самостоятельно.

Тем не менее, модули в Nginx очень полезны и востребованы, вы можете определить чего вы хотите от сервера и включить только те модули, что вам нужны. Некоторые пользователи считают такой подход более безопасным так как произвольные модули не могут быть подключены к серверу.

Модули Nginx реализуют те же возможности, что и модули Apache: проксирование, сжатие данных, ограничение частоты запросов, логгирование, модификация URL’ов, гео-локация, аутентификация, шифрование, потоковое вещание, почтовые функции.

Поддержка, совместимость, экосистема и документация


В процессе использования приложения важными являются экосистема созданная вокруг него и возможность получения поддержки.

Apache


Так как Apache пользуется популярностью такое длительное время с поддержкой у него нет проблем. Легко можно найти большое количество документации как от разработчиков Apache, так и от сторонних авторов. Эта документация покрывает все возможные сценарии использования Apache, включая взаимодействие с другими приложениями.

Существует много инструментов и веб-проектов идущих в комплекте со средствами запуска самих себя из под Apache. Это относится как к самим проектам, так и к системам управления пакетами.

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

Nginx


Nginx обычно используется там, где предъявляются повышенные требования к производительности и в некоторых областях он все еще является догоняющим.

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

Разработчики стороннего ПО также начинают поддерживать работу с Nginx и некоторые из них уже предлагают на выбор пользователя конфиги для работы или с Apache, или с Nginx. И даже без поддержки приложением работы с Nginx не составляет большого труда написать свой конфиг для интеграции приложения с Nginx.

Совместное использование Apache и Nginx


После того как вы ознакомились с плюсами и минусами Apache и Nginx у вас должно появиться представление того, какой из серверов больше подходит под ваши задачи. Однако, можно достигнуть лучших результатов используя оба сервера вместе.

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

Nginx будет самостоятельно обслуживать статический контент, а для динамического контента, например для запросов к PHP-страницам, будет передавать запрос к Apache, который будет рендерить страницу, возвращать ее Nginx’у, а тот в свою очередь будет передавать ее пользователю.

Такая конфигурация очень популярна, Nginx используется в ней для сортировки запросов. Он обрабатывает сам те запросы которые может и передает Apache только запросы, которые не может обслужить сам, снижая таким образом нагрузку на Apache.

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

Заключение


Как вы можете видеть и Apache, и Nginx — это мощные, гибкие и функциональные инструменты. Для того чтобы выбрать сервер под ваши задачи необходимо определиться с требованиями к нему и провести тесты на всех возможных паттернах использования вашего приложения.

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

Apache HTTP Server на OS Windows

Apache 2.4 HTTP Server — установленный на ваш компьютер, позволяет превратить набор страниц в полностью отлаженный сайт с применением современных серверных технологий. Последний релиз стабильной ветви Apache HTTP Server 2.4.x, представляет собой наилучшую доступную версию.

Материал для программистов, разрабатывающих веб-приложения, желающих установить и использовать на персональном компьютере сервер Apache, для предварительного просмотра, проверки и отладки кода, в процессе разработки.
Данный раздел написан после многочисленных наблюдений за попытками, желающих (не очень хорошо знакомых с директивами и конфигурированием), установить на свой компьютер различные версии Web-сервера Apache. Большинство этих попыток заканчивалось на установке сервера Apache — получения страницы с сообщением — Вы видите это вместо ожидаемой страницы… или для версии 2.2. — It works!. Незначительная часть — на конфигурировании главного сервера, довольно редко — на установке виртуальных хостов. Просмотр материалов в сети Интернет, посвященных установке сервера Apache, позволяет сделать вывод — руководствуясь ими, не имеющий опыта пользователь не сможет добиться желаемого результата.
Поэтому, для установки и настройки на домашнем компьютере сервера Apache 2.4, предлагается на первом этапе:

  • установить Web-сервер Apache
  • внести изменения в три файла конфигурации

Записать на диск две простейшие индексные страницы:

  • для главного сайта сервера Apache
  • для разрабатываемого вами сайта  — 

и, затем, заняться установкой и изучением всего необходимого для превращения компьютера в полноценный сервер.

HTTP-сервер Apache — наиболее популярный web-сервер служащий для обработки и обслуживания запросов пользователей одной из составляющих WWW — сети Интернет. Apache HTTP Server — свободное, бесплатно распространяемое программное обеспечение с открытыми исходными кодами для современных операционных систем, включая UNIX и Windows, Novell NetWare и других. Его главные отличия от аналогичных программных продуктов: предельно компактный, написанный на языке C код, проверенная годами, надежная и стабильная работа на сотнях тысяч web-узлов, высокая производительность и скорость обработки запросов, расширяемость и переносимость, относительная простота и гибкость настройки для имеющих опыт администраторов.
Постоянная работа создателей и продолжателей проекта по улучшению и наращиванию новых возможностей, а также выпуск обновлений, делает сервер Apache одним из самых востребованных веб-серверов сети.
Тестирование новых версий тысячами профессионально подготовленных добровольных помощников, позволяет легко выявлять уязвимости и развиваться проекту со скоростью недоступной для большинства создателей web-серверов.
Цель проекта Apache HTTP Server Project — состоит в создании и развитии эффективного, безопасного, расширяемого сервера, который обеспечивает услуги HTTP в соответствии с текущими стандартами.
Apache известен как сервер, сыгравший ключевую роль на начальном этапе развития World Wide Web и продолжающий оставаться самым популярным в использовании сервером сети, служащим фактически базовой платформой, ориентируясь на которую разрабатываются и оцениваются другие серверы.
Первая версия веб-сервера Apache основанного на идеях и коде, самого популярного HTTP сервера того времени: NCSA — httpd 1.3 — была разработана в 1995 Робом Маккулом. В первую «Апачевскую Группу» разработчиков также входили: Брайен Бехлендорф, Рой Т. Fielding, Роб Хартилл, Дэвид Робинсон, Клифф Сколник, Рандай Тербуш, Роберт С. То, Эндрю Вайлсон, Эрик Хагберг, Франк Петерс и Николас Пиок.
C того времени в своем развитии Apache далеко превзошел базовую систему и может конкурировать, и вероятно превзойти, почти любой другой UNIX сервер HTTP по функциональным возможностям, эффективности и скорости. Так как, исходный код свободно доступен (open source software), любой желающий может сконфигурировать сервер под определенные потребности, используя модули сторонних производителей и большую общедоступную библиотеку дополнений.
На странице популярных вопросов официального сайта проекта указано, что имя — ‘Apache’ выбрано из уважения к коренному американскому индийскому племени Apache известному своей выносливостью и военными навыками. Самое, широко распространенное заблуждение — название ‘Apache’ произошло от «patch» (на компьютерном сленге — заплата). Имеется в виду, что в 1995 году веб-сервер Apache состоял из набора исправлений к базовому коду NCSA HTTPd 1.3 и поэтому «a patchy» сервер из …
Apache HTTP Server — основной сервер сети Интернет с открытым исходным кодом, на котором размещено большинство веб-сайтов мира. Сервер Апачи HTTP — часть из множества влиятельных проектов, разработанных Группой Апачи. Благодаря их усилиям, в значительной мере сформировалась WWW — всемирная паутина и они продолжают быть доминирующей силой в индустрии Web-хостинга.
Web-сервер Apache доступен для бесплатной загрузки с сайта разработчиков — httpd.apache.org.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с официальной документацией —

 httpd.apache.org

Установка Apache — все версии: apache 2.2, apache 2.4 .
При написании этого раздела не ставилась задача — ответить на все вопросы, связанные с назначением модулей, директив и их параметров сервера Apache 2.4. Да и большинство желающих изучить языки программирования, используемые при создании веб-приложений, не ставит перед собой цель — стать администратором сервера. Многим, домашний сервер нужен для проверки выполнения скриптов на Perl и PHP, директив SSI и их отладки. Без использования этих серверных технологий, написание страниц сайта только на языке HTTM — трудно назвать веб-программироанием.
Проводить тестирование сайта на сервере хостинг-провайдера неудобно и дорого, а тем, кто его не имеет — просто невозможно.
Главная задача этой публикации — помочь сократить, до двадцати минут, время установки и получения работающего сервера Apache.

Вы, на своем компьютере (называемым клиентом) в программе получившей название — web-браузер, вводите строку запроса в поле адреса. Обрабатывает ваш запрос программа, ожидающая сообщение о вызове и выполняющаяся на компьютере (сервере) с которым вы соединяетесь. Эта программа-демон, называемая Web-сервером. Обмен между демоном и приходящим от вашего компьютера сообщением, происходит посредством протокола HTTP, указанного в запросе. В равной степени могут использоваться другие протоколы: FTP. SMTP. POP, NNTP и прочие. Каждый протокол имеет уникальный идентификатор. Комбинация Web-браузера, протокола HTTP и Web-сервера сложнее других протоколов, так как её функции не ограничиваются передачей различных видов информации от одного узла к другому. Сообщения, посылаемые от Web-сервера к Web-браузеру, написаны на языке HTML. В этих сообщениях содержатся: инструкции, текст, скрипты на Perl, PHP, JavaScript и других языках, локальные и гиперссылки, ссылки на рисунки, звуковые и видео файлы, формы позволяющие вводить информацию и отправлять её на Web-сервер.

Сайт, в общем случае, — это набор страниц (файлов) связанных между собой локальными и глобальными ссылками. Пока выведем за скобки глобальные ссылки (гиперссылки) — ссылки со счетчиков на серверы статистики, почтовые серверы, тематические каталоги, поисковые системы и т. д. — для проверки работоспособности которых без выхода в Интернет не обойтись.
Практически невозможно разрабатывать и отлаживать скрипты на удалённом сервере
Страницы (файлы) непосредственно размещенные на сайте, связаны между собой локальными (внутри сайта) ссылками, позволяющими осуществлять переход от одной из них к другой, загружать файлы рисунков, содержимое других страниц, вызовы скриптов и многое другое. Если сайт состоит из одной страницы, то его можно не задумываясь размещать на сервере провайдера, так как вы, при загрузке её из Интернета, моментально увидите возможные ошибки. Но если сайт состоит из десятка страниц, то для проверки правильности вывода текстовой и графической информации, вывода данных из CGI-скриптов, SSI-директив, переходов на другие страницы сайта и пр., вам потребуются, при тестировании страниц сайта в Интернете, значительные временные и финансовые затраты.
Снизить вышеперечисленные затраты можно при отладке сайта на своем — локальном — компьютере (за счет отсутствия подключения к Интернету и высокой скорости загрузки), установив на него свой Web-сервер на платформе Windows. Для превращения компьютера в полноценный сервер принято устанавливать следующие пакеты программного обеспечения:

Документация входит в пакеты инсталляции программных продуктов.
На первый взгляд, вышеперечисленное выглядит неподъемным — как всё это изучить, установить, сконфигурировать и отладить? Но это не совсем так. Для эффективного проектирования, разработки и создания сайтов, в начале достаточно установить сервер Apache и, например — PHP или Perl.

 Зачем устанавливливать сервер Apache на Windows

Можно на Unix-подобных операционных системах, использовать входящий в их состав сервер Apache 2.4 (Ubuntu 14.04, Debian 8). Или, на OS Windows, службы Internet Information Services (IIS), в которых основным компонентом является веб-сервер — WWW (W3SVC). Но по данным StatCounter доля рынка операционной системы Linux в Европе в январе 2018 года составляла 1.03%. В то же время 64,9% веб-сайтов, использовали Unix/Unix-подобные операционные системы.

Установленный на OS Windows, полностью сконфигурированный сервер Apache 2.4 занимает ~ 50 Мбайт (папка Apache24 и два каталога с разрабатываемыми сайтами). Их копии — это всё, что нужно для переустановки или установки рабочего сервера Apache на любой компьютер за несколько минут.

Разрабатывать, отлаживать и тестировать сайт необходимо, с установленным на локальном компьютере сервере аналогичном тем, что предоставляют клиентам хостинг-провайдеры.
Здесь явным лидером является Apache. Будучи бесплатной открытой программой, предназначенной для бесплатных — же Unix-систем (FreeBSD, Linux и др.), Apache по функциональным возможностям и надежности не уступает коммерческим серверам, а широкие возможности конфигурирования позволяют настроить его для работы практически с любой конкретной системой. Существуют локализации сервера для различных языков. Возможна установка сервера Apache на OS Windows. Так как, настоящее время, Windiws-хостинг значительно дороже и менее надежен, многие по прежнему будут предпочитать Unix-хостинг с установленным сервером Apache.

×

Apache — почему версии 2.4 ?

Желательно всегда работать с последней версией программных продуктов, в которых учтены и исправлены все замечания и пожелания пользователей, добавлены новые возможности. Версия Apache 2.4 — является существенной переработкой кода версий Apache 2.x с целью повышения уровня мобильности и модульности.
В этой версии улучшены десятки модулей и программ, включено 23 новых модуля. В том числе, с версии 2.4.17, поддерживается протокол HTTP/2 ( 7540 RFC). Apache HTTP Server Project в сообщении о выпуске Apache HTTP сервера, версии 2.4 подчеркивает что этот выпуск является итогом двадцатилетней работы по разработке новой ветви проекта и рекомендуется как альтернатива всем предыдущим выпускам! Проект Apache отметил свое 20-летие в феврале 2015 года.
Первый альфа-релиз Apache 2 (Апачи) — был выпущен в марте 2000 года. Первая рабочая версия в мае 2002 года.

Установка и запуск сервера Apache на ОС Windows

Процесс установки сервера сводится к внесению изменений в три файла конфигурации и записи на диск двух каталогов

  • httpd.conf  —  главный файл конфигурации сервера
  • httpd-userdir.conf  —  файл настройки параметров каталогов пользователей
  • httpd-vhosts.conf  —  файл конфигурации виртуальных хостов

и внесении добавлений в файл OS Windows:

  • hosts  —  файл сопоставления имен узлов IP-адресам

Запись на диск двух шаблонов сайтов:

  • server-apache24.ru  —  каталога главного сайта сервера Apache
    (См. — Инсталляция Apache)
  • www  —  каталог с примерами сайтов виртуальных хостов.

Излишняя детализация, в описании установки и конфигурировании сервера Apache, интерпретаторов Perl и PHP — «нажмите на кнопку, введите точку и т. д.» — объясняется множеством обращений желающих установить на своём  компьютере Apache 2.2.16 HTTP Server, но не имеющих опыта установки и конфигурирования сервера, не работавших в Total Commander’е, без которого, в вопросах связанных с программированием — не обойтись.

Последняя версия Apache HTTP Server доступна на странице загрузки — Apache HTTP Software Foundation

 Apache на Window


  Установка сервера Apache на Windows

Установка Apache 2.4 возможна на следующих операционных системах:

Windows 10 ; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2003 Service Pack 2; Windows Server 2008 R2 SP1; Windows Server 2008 Service Pack 2; Windows Server 2012; Windows Vista Service Pack 2; Windows XP Service Pack 3

Два варианта установки сервера Apache на OS Windows

 Как установить, настроить и запустить Apache 2 на Microsoft Windows


1. Установка Apache используя инсталлятор Windows

Установщик (инсталлятор) Windows — (Microsoft Windows Installer) — это компонент операционной системы Windows, служащий для установки, восстановления и удаления программного обеспечения простым и удобным способом.
Всё, что необходимо для установки и правильной работы ПО, содержится в установочных пакетах (installation packages), имеющих расширение — .msi.

Для установки Apache из установочного пакета запустите (обязательно из корневого каталога диска) программу инсталляции сервера Apache, соответствующую установленной версии ОС. Например — apache_2.4.4-x64-no-ssl. msi


Запустите программу инсталляции — apache_2.4.4-x64-no-ssl. msi и в окне диалога Мастера Инсталляции нажмите кнопку Next.

Apache HTTP Server 2.4 — Installation Wizard
(HTTP-сервер Apache 2.4 — Мастер установки)

Далее, как обычно, следуйте указаниям мастера установки.

Раньше, до версии HTTPD-2.2.25, можно было выбрать последнюю версию инсталлятора Apache для Windiws. например, HTTPD-2.2.25-win32-x86-OpenSSL-0.9.8y.msi.
В настоящее время вы не сможете загрузить инсталляторы Apache со страницы загрузки — Apache Download binaries win32. Их нужно искать на сайтах сторонних производителей.

2. Загрузка исходных кодов Apache HTTP Server 2.4 для компиляции и установки на ОС Windows

Проект Apache HTTP Server не предоставляет дистрибутивы программного обеспечения. На apache.org можно получить только исходные коды.

Если вы не можете скомпилировать HTTP-сервера Apache самостоятельно, то загрузите пакет исполняемых файлов с сайтов коммиттеров, предоставляющих бинарные дистрибутивы.
Но это не официальные выпуски Apache Software Foundation.

Сервер Apache HTTPD для Microsoft Windows доступен для загрузки
с сайтов сторонних поставщиков.

Исполняемые файлы Apache созданы с оригинальных источников последних версий опубликованных Apache Software Foundation
Популярные варианты загрузки для установки Apache HTTPD на Microsoft Windows, и, необязательно, PHP и MySQL, возможны с сайтов сообществ разработчиков и любителей, которые предпочитают использовать Web-сервер Apache вместо IIS.
Установка Apache HTTPD v2.4 в качестве службы Windows
Для установки Apache HTTPD v2.4 в качестве службы Windows, проще получить скомпилированный HTTP-сервер Apache с сайта:
Например — Apache 2.4 VC15 Windows:
Apache Version 2.4 Win64 — httpd-2.4.29-Win64-VC15.zip
Apache Version 2.4 Win32 — httpd-2.4.29-Win32-VC15.zip
Там же можно скачать последнюю версию Windows® Visual Studio C ++ 2017: vc_redist_x64 или vc_redist_x86.

Или сайта

С указанных сайтов вы загрузите исполняемые файлы и модули последней версии Apache.

Убедитесь, что у вас установлена последняя версия C ++ Visual Studio 2017.

VCXX — означает, что сервер Apache скомпилирован с помощью Visual C++ XX.0 и чтобы установить его как службу Windows, нужно иметь на компьютере пакет Microsoft Visual C++ Redistributable Package (VCRedist) XX включающий в себя компоненты и библиотеки DLL, необходимые для выполнения программ написанных на С++.
XX — номер весии.


Для чего нужно устанавливать компонент Microsoft Visual C++ ?

Библиотеки

В языках программирования — C, C++, наряду со стандартными библиотеками определения макросов и типов, имеются множество рабочих статических и динамических библиотек функций, классов и ресурсов.

Две модели библиотек.
1.   Статические библиотеки — встраиваются в код исполняемого exe-файла.
2.   Динамически связываемые библиотеки — DLL (используемые в Windows) — не включаются в код программы.
Вместо этого приложение получает ссылку на динамическую библиотеку. Библиотеки DLL не являются программами и не могут выполняться как exe-файлы.

Для установки и выполнения, исполняемым файлам сервера Apache необходимы динамически связываемые библиотеки компонента C++ Redistributable Visual Studio (версия) — vc_redist_x64/86.exe.


Пакеты «все-в-одном»
Есть некоторые дистрибутивы для Windows — «все-в-одном», которые содержат полностью интегрированную и готовую к запуску среду разработки с Apache, PHP, MySQL и других приложений в одном установочном файле, например: Предназначенные для желающих изучить основы HTML (HyperText Markup Language — «язык гипертекстовой разметки») и серверных языков программирования необходимых для создания веб-приложений, не вникая в подробности установки HTTP-сервера Apache и пакетов программного обеспечения — php, mysql, perl, phpmyadmin, sendmail и пр.
Нет ничего плохого в использовании этих пакетов. Хотя установка, настройка и запуск Apache 2.4 в качестве службы Microsoft Windows вручную поможет вам узнать больше о системе и параметрах её конфигурации.
Установка сервера Apache 2.4 на Windows

Apache HTTP Server | Русскоязычная документация по Ubuntu

Apache HTTP Server — проект, развиваемый The Apache Software Foundation, в рамках которого разрабатывается кроссплатформенный HTTP сервер с открытым исходным кодом. Входит в состав LAMP и XAMPP.

Версии Apache в Ubuntu

Ubuntu Apache
12.04 LTS (Precise) 2.2
14.04 LTS (Trusty) 2.4
15.10 (Wily) 2.4
16.04 LTS (Xenial) 2.4

Хостинг сайтов

Можно реализовать четырьмя способами:

  1. по умолчанию в папке /var/www/html. Доступом является http://localhost/

  2. настройки основного хостинга. Например, http://localhost/phpmyadmin

  3. в любой папке с помощью модуля виртуальных хостов. Например, http://mysite/

  4. в папке пользователя public_html (модуль userdir). Например, http://localhost/~username

Установка

Для установки Apache выполните в терминале:

sudo apt-get install apache2

Настройка

Для применения изменений в настройках необходимо перезапустить демон Apache:
sudo service apache2 restart

В Ubuntu конечный файл настройки (apache2.conf) расделён на несколько файлов, расположенных в разных поддиректориях. Подробней написано в комментариях файла apache2.conf.

       /etc/apache2/
       |-- apache2.conf
       |       `--  ports.conf
       |-- mods-enabled
       |       |-- *.load
       |       `-- *.conf
       |-- conf-enabled
       |       `-- *.conf
       `-- sites-enabled
               `-- *.conf

Настройки модулей расположены в директории /etc/apache2/mods-available. Для подключения или отключения модулей (настроек модулей) следует использовать соответствующие команды a2enmod или a2dismod. Пример подключения модуля:

sudo a2enmod <mod-name>

Свои настройки следует сохранять в файлы, расположенные в директории /etc/apache2/conf-available. Для подключения или отключения своих настроек следует использовать соответствующие команды a2enconf или a2disconf. Пример подключения файла со своими настройками:

sudo a2enconf <config-name>

Настройки виртуальных хостов следует сохранять в файлы, расположенные в директории /etc/apache2/sites-available. Для подключения виртуальных хостов следует использовать соответствующие команды a2ensite или a2dissite. Пример подключения виртуального хоста:

sudo a2ensite <site-name>

Кодировка по умолчанию

Для указания кодировки по умолчанию следует использовать директиву AddDefaultCharset в файле /etc/apache2/conf-available/charset.conf (или раскомментировать соответствующую строку):

AddDefaultCharset UTF-8

Виртуальные хосты

Файлы настроек виртуальных хостов хранятся в /etc/apache2/sites-available/*.conf. По умолчанию в Apache уже настроен один виртуальный хост. Его настройки лежат в файле 000-default.conf. Вы можете использовать этот виртуальный хост в качестве примера.

Пример настройки виртуального хоста:

<VirtualHost *:80>
    #Имя хоста
    ServerName host1.server1
    #Корневая папка хоста
    DocumentRoot /var/www/host1.server1
    <Directory /var/www/host1.server1>
        #Разрешение на перезапись всех директив при помощи .htaccess
        AllowOverride All
    </Directory>
</VirtualHost>

Назовите файл настройки именем вашего хоста host1.server1.conf и сохраните.

После создания файла настроек допишите в /etc/hosts имя вашего хоста:

127.0.0.1    host1.server1

Для включения созданного виртуального хоста используется утилита a2ensite:

sudo a2ensite host1.server1

Отключается хост аналогично утилитой a2dissite:

sudo a2dissite host1.server1

Модули

mod_userdir

Модуль mod_userdir позволяет использовать директории, находящиеся в домашних директориях пользователей для хранения веб страниц. По умолчанию Apache ищет запрашиваемые страницы в директории ~/public_html

mkdir ~/public_html

Чтобы включить mod_userdir, выполните:

sudo a2enmod userdir

и добавьте необходимого пользователя в группу www-data:

sudo adduser $USER www-data

после чего перезагрузите Apache:

sudo service apache2 restart

Страницы будут доступны по адресу http://localhost/~username, где username — имя пользователя.

Настройка public_html подробно.

CGI

Если Вы хотите запускать на сервере cgi-скрипты, подключите модуль cgi командой

sudo a2enmod cgi

По умолчанию cgi-скрипты размещаются в директории /usr/lib/cgi-bin, но вы можете разместить их где угодно, указав это в настройках своего виртуального хоста, либо глобально для всех хостов в файле /etc/apache2/conf-enabled/serve-cgi-bin.conf.

Eсли ваш сервер работает во внешней сети, то в целях безопасности настоятельно рекомендуется размещать cgi-скрипты вне корневой директории виртуального хоста

Настройка HTTPS в Apache

Веб-сервер Apache полностью поддерживает работу по HTTPS. Чтобы активировать поддержку HTTPS на уже установленном Apache, необходимо выполнить следующее.

Создание ключа и ssl-сертификата

Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преимуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанный компанией-сертификатором (Certificate authority), стоит денег.

Для создания ключа и сертификата вводим команду:

openssl req -new -x509 -days 30 -keyout server.key -out server.pem

На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем.

На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter, соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.

После ответа на все вопросы в директории должны появиться два новых файла — server.pem (ключ) и server.crt (сертификат).

Чтобы использовать сгенерированный ключ, нужно знать пароль, введённый нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? 🙂 Поэтому снимаем пароль с ключа:

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:

sudo cp server.pem /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key

Настройка Apache

Для начала необходимо активировать mod_ssl:

sudo a2enmod ssl

А затем включить настройки HTTPS сайта по умолчанию:

sudo a2ensite default-ssl

Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к вашим сертификатам. Сам файл называется /etc/apache2/sites-enabled/default-ssl (или /etc/apache2/sites-enabled/default-ssl.conf).

В этом файле рекомендуется после директивы

SSLEngine on

добавить строчку

SSLProtocol all -SSLv2

чтобы запретить использование устаревшего протокола SSLv2.

Дальше вам необходимо отредактировать параметры, ответственные за сертификаты.

# Публичный сертификат сервера
SSLCertificateFile    /etc/ssl/certs/server.pem
# Приватный ключ сервера
SSLCertificateKeyFile /etc/ssl/private/server.key

Теперь просто перезагрузите Apache:

sudo service apache2 restart

И если все параметры указаны верно, ваши сайты станут доступны по HTTPS.

Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.

Перенаправление HTTP запросов на HTTPS

Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Сделаем это с помощью mod_alias. Если он не включён — включаем:

sudo a2enmod alias
sudo service apache2 restart

Затем изменяем файл /etc/apache2/sites-enabled/000-default, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл добавляем директиву

Redirect / https://example.com/

При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.

Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS-страницу.

Ссылки

Возможные проблемы

Если при запуске появляется ошибка

apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

добавьте в свой файл конфигурации строку

ServerName localhost

Смотрите также

Ссылки

Настройка HTTP/2 на примере Apache 2.4, PHP 7 и Ubuntu 18.04 LTS / ХабрЯ понимаю, что, возможно, Апач на данный момент не является предпочтительным выбором для запуска на нём новых проектов, то тем не менее, он существует, здравствует и проекты на нём таки работают. Выбор на него может пасть по каким-то личным предпочтениям, по требованиям совместимости, или каким-то другим соображениям… не суть. В этой статье я хочу по пунктам описать, как настроить поддержку протокола HTTP/2 на веб-сервере Apache, потому что сам им пользуюсь и в такой статье нуждаюсь нуждался, и надеюсь, что кому-нибудь она тоже пригодится на практике.

Что такое HTTP/2? Как понятно из названия, это — вторая версия протокола HTTP. Подробнее о преимуществах Вы можете прочитать хотя бы на Википедии. От себя лишь скажу, что если Вы хоститесь не на шаред-хостинге, то поддерживать данный протокол — must have, как и, например, HTTPS. Да, для того, чтобы у Вас заработал HTTP/2, Вам потребуется полноценный доступ к консоли машины (пусть и к виртуальной) через ssh или каким-то иным образом, а также уже настроенный HTTPS (TLS/SSL). Ну что же, давайте приступим к делу.
Шаг первый. Обновление Apache

Протокол HTTP/2 поддерживается сервером Apache с версии 2.4.24, поэтому, если у Вас установлена более старая версия, — самое время её обновить. Но сначала проверим:
apache -v

Эта команда выдаст что-то вроде такого:
Server version: Apache/2.4.37 (Ubuntu)
Server built:   2018-10-28T15:27:08

В первой строчке указана версия сервера. Если она больше или равна 2.4.24, — можем смело переходить ко второму шагу. В противном случае, нужно обновить апач, актуальные версии которого Вы сможете найти в PPA известного (если Вам уже приходилось ставить что-то свеженькое на Debian/Ubuntu) разработчика — Ondřej Surý. PPA — это персональные пакеты, не включённые в официальные репозитории дистрибутивов. Поэтому, чтобы воспользоваться ими, сначала нужно научить систему, что и откуда брать:
sudo add-apt-repository ppa:ondrej/apache2

Парень делает хорошее дело, и не против получить небольшой донат, о чём весьма недвусмысленно заявляет при подключении к его репам…

Далее, собственно, обновляем пакеты:

sudo apt update
sudo apt upgrade

И снова проверяем версию Apache. Если всё прошло хорошо — на Вашем сервере будет стоять Apache, на котором можно настроить HTTP/2. Если всё пошло плохо — боюсь, это уже не тема данной статьи. А теперь переходим ко второму шагу.
Шаг второй. Использование FastCGI

Что такое FastCGI — лучше почитать, как я уже говорил, хотя бы в Википедии, потому что коротко не расскажешь. Вам нужно перейти на PHP, работающем в режиме FastCGI (php-fpm). Как это работает — дан хороший ответ на Тостере. Здесь же я в такие нюансы вдаваться не буду, а перейду сразу к установке:
sudo apt install php-fpm

После установки нам будет сказано буквально следующее: чтобы включить PHP 7.2 FPM в Apache2,  сделайте:
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.2-fpm

Делаем. После этого нужно отключить mod_php, потому что вместо него у Вас теперь php-fpm.
sudo a2dismod php7.2

Вообще говоря, версия PHP у Вас до этого могла стоять другая. Глянуть, что за модули у Вас установлены в системе можно в директории /etc/apache2/mods-available/, а какие активны в /etc/apache2/mods-enabled

Далее перезапускаем Apache

sudo service apache2 restart

и переходим к третьему шагу.
Шаг третий. Переход с модуля Prefork на Event

Что такое MPM и в чём разница между prefork, event, worker — можно почитать вот в этой замечательной статье… но сейчас на самом деле важно знать только одно: «стандартный» prefork не очень совместим с HTTP/2, поэтому Вам нужно использовать более подходящий. Выключаем один, включаем другой, перезагружаем Apache.
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
service apache2 restart

Шаг четвёртый. Включаем HTTP/2

Либо в конфигурационный файл хоста, найти который можно в директории /etc/apache2/sites-enabled/, либо в конфиге самого сервера /etc/apache2/apache2.conf говорим, что нам нужна поддержка нового протокола:
Protocols h3 h3c http/1.1

Что действительно важно — это h3. Два других пункта — на Ваше усмотрение. h3c — это поддержка HTTP/2 через TCP (а не TLS). http/1.1 — поддержка старой версии HTTP.

Включаем модуль http2 и перезагружаем сервер:

sudo a2enmod http2
service apache2 restart

Приехали

С настоящего момента всё. Ваш ресурс должен начать работать по протоколу HTTP/2. Если вы пользуетесь Хромом, зайдя на ресурс, Вы увидете, как засветилась синим цветом пиктограмма молнии в правом верхнем углу браузера. Наведя на неё курсор, вы увидите подсказку HTTP/2-enabled(h3). В Firefox войдите в панель разработчика и на вкладке Network включите столбец Protocol — для ресурсов с вашего сайта должен значиться HTTP/2.0. Также, можно проверить, поддерживает ли ваш ресурс этот протокол на одном из множества сайтов в Сети. Но не стоит расслабляться, потому что уже на пятки наступает HTTP/3 🙂

Что такое Apache? Подробный обзор веб-сервера Apache

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

Apache HTTP Server — это бесплатный веб-сервер с открытым исходным кодом, который доставляет веб-контент через Интернет. Обычно его называют Apache, и после разработки он быстро стал самым популярным HTTP-клиентом в сети. Широко распространено мнение, что Apache получил свое название от истории своего развития и процесса улучшения с помощью примененных исправлений и модулей, но это было исправлено еще в 2000 году.Было обнаружено, что название произошло от уважения индейского племени за его устойчивость и долговечность.

Теперь, прежде чем мы углубимся в Apache, сначала рассмотрим, что такое веб-приложение и стандартная архитектура, обычно встречающаяся в веб-приложениях.

Архитектура веб-приложений

Apache — это всего лишь один компонент, который необходим в стеке веб-приложений для доставки веб-контента. Один из наиболее распространенных стеков веб-приложений включает LAMP или Linux, Apache, MySQL и PHP.

Linux — это операционная система, которая управляет операциями приложения. Apache — это веб-сервер, который обрабатывает запросы и обслуживает веб-ресурсы и контент через HTTP. MySQL — это база данных, которая хранит всю вашу информацию в удобном для вас формате. PHP — это язык программирования, который работает с Apache для создания динамического веб-контента.

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

Брандмауэры

помогают защитить веб-приложение от внешних угроз и внутренних уязвимостей в зависимости от того, где настроены брандмауэры. Балансировщики нагрузки помогают распределять трафик между веб-серверами, которые обрабатывают запросы HTTP (S) (именно туда входит Apache), и серверами приложений (серверами, которые управляют функциональностью и рабочей нагрузкой веб-приложения.) У нас также есть серверы баз данных, которые обрабатывают хранилище активов и резервные копии. В зависимости от вашей инфраструктуры, ваша база данных и приложение могут работать на одном сервере, хотя рекомендуется хранить их отдельно.

Веб-сервер Пейзаж

Интернет состоит из множества различных технологий, и не все они одинаковы. Хотя Apache, возможно, является одним из самых популярных веб-серверов в сети, есть много других игроков, и ситуация постоянно меняется.В конце 90-х и начале 2000-х доминирование Apache было очень сильным, обслуживая более 50% активных веб-сайтов в Интернете. IIS (Internet Information Services) от Microsoft также был опцией, но не такой популярной.

Сегодня Apache по-прежнему обслуживает большую часть активных веб-сайтов, но их доля в этой области сократилась с 50% до чуть менее 40% по состоянию на 2018 год, и NGINX, относительно новый игрок на игровом поле веб-сервера, занимает второе место. место с примерно 35% и Microsoft IIS колеблется около 8-10%.Каждый год появляется новый набор веб-приложений с новыми стеками и серверами, поэтому ландшафт постоянно меняется.

Почему Apache?

Apache считается программным обеспечением с открытым исходным кодом, что означает, что исходный код свободно доступен для просмотра и совместной работы. Благодаря открытому исходному коду Apache очень популярен среди разработчиков, которые создали и настроили свои собственные модули для применения определенных функций и улучшения своих основных функций. Apache существует с 1995 года и отвечает как основная технология, которая помогла стимулировать первоначальный рост Интернета в его младенчестве.

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

К числу наиболее популярных модулей, которые можно добавить, относятся SSL, поддержка программирования на стороне сервера (PHP) и конфигурации балансировки нагрузки для обработки больших объемов трафика.Apache также может быть развернут на Linux, MacOS и Windows. Если вы научитесь настраивать Apache в Linux, вы можете администрировать Apache в Windows и Mac. Единственной разницей будут пути к каталогам и процессы установки.

Как работает Apache?

Apache функционирует как способ связи по сети от клиента к серверу с использованием протокола TCP / IP. Apache можно использовать для самых разных протоколов, но наиболее распространенным является HTTP / S. HTTP / S или Hyper Text Transfer Protocol (S обозначает Secure) — это один из основных протоколов в сети, и наиболее известен Apache.

HTTP / S используется для определения того, как сообщения форматируются и передаются через Интернет, с инструкциями для браузеров и серверов о том, как реагировать на различные запросы и команды. Протокол передачи гипертекста Безопасным обычно является порт 443, а незащищенный протокол — через порт 80.

Сервер Apache настраивается с помощью файлов конфигурации, в которых модули используются для управления его поведением. По умолчанию Apache прослушивает IP-адреса, настроенные в его файлах конфигурации, которые запрашиваются.Именно здесь в игру вступают многие сильные стороны апачей.

С помощью директивы Listen Apache может принимать и направлять определенный трафик к определенным портам и доменам на основе определенных запросов комбинации адресов и портов. По умолчанию Listen работает на порте 80, но Apache может быть привязан к разным портам для разных доменов, что позволяет размещать множество разных веб-сайтов и доменов и один сервер. Вы можете прослушивать domain1.com через порт 80, domain2.com через порт 8080 и domain3.com через порт 443, используя HTTPS все на Apache.

Как только сообщение достигает своего адресата или получателя, оно отправляет уведомление или сообщение ACK, в основном давая подтверждение исходному отправителю, что его данные успешно прибыли. Если при получении данных произошла ошибка или некоторые пакеты были потеряны при передаче, целевой хост или клиент отправляет сообщение «Не подтверждено» или сообщение NAK, чтобы сообщить отправителю о необходимости повторной передачи данных.

Заключение

На протяжении последних нескольких десятилетий Apache доказал, что является основным продуктом многих популярных стеков и основой раннего интернет-года.Хотя его популярность снижается, а возможности выбора веб-серверов растут, Apache по-прежнему играет ключевую роль во многих технологических стеках и системной инфраструктуре компаний. Даже несмотря на то, что новые технологии и серверы выходят без остановки, Apache по-прежнему остается технологией, которую каждый разработчик должен научиться обрабатывать и настраивать.

Полная видимость для DevSecOps

Сокращение времени простоя и переход от реактивного к проактивному мониторингу.

,

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

Хотя Apache может использоваться многими способами (например, в качестве прокси-сервера или балансировщика нагрузки), он обычно используется в качестве веб-сервера . Веб-сервер — это программное обеспечение с основной функцией для хранения, обработки и доставки веб-страниц клиентам. Протокол, используемый для доставки веб-страниц, HTTP ( Hypertext Transfer Protocol ).

HTTP — это протокол клиент-сервер; клиент (обычно веб-браузер) запрашивает ресурс (веб-страницу) с веб-сервера.Веб-сервер отвечает запрошенной веб-страницей. Вот графическое представление связи между веб-клиентом и веб-сервером:

how web server works

Как вы можете видеть на картинке выше, клиент хочет получить доступ к http://google.com и указывает браузеру на URL http://google.com (это пример сообщения HTTP-запроса ). Веб-сервер (на котором работает Apache или аналогичное программное обеспечение веб-сервера), на котором размещен сервер http: // google.com получает запрос и отвечает содержимым веб-страницы (ответное сообщение HTTP ).

Веб-серверы обычно используют хорошо известный TCP-порт 80. Если порт не указан в URL-адресе, браузеры будут использовать этот порт при отправке HTTP-запроса. Например, вы получите тот же результат при запросе http://google.com и http://google.com:80 .

.
Веб-сервер Apache: Администрирование — Что такое HTTP-сервер Apache и для чего он используется? «

Есть ряд причин, по которым вы можете захотеть узнать об Apache. Например, ваша ответственность за работу, возможно, только что изменилась, и внезапно вы должны знать, как управлять веб-сервером. Возможно, вы обнаружили пыльный компьютер, работающий в шкафу с запиской, на которой написано: «Не отключайте питание, или веб-сайт не работает». Вы можете просто узнать больше об администрировании веб-сервера.Путь к обучению разнообразен, и нет неправильной причины. Цель этого курса — научить вас исследовать существующий веб-сервер Apache, узнать, как он настроен и как им управлять. Apache — большая тема, потому что это сложная система с множеством нюансов и конфигураций. И я не собираюсь исследовать каждый аспект. Вместо этого я собираюсь сосредоточиться на создании основы, на которой можно строить знания. В этом курсе будут представлены практические прикладные приемы работы с сервером, а не мелочи.Начиная с этой главы, мы собираемся исследовать, что такое HTTP-сервер Apache и для чего он используется, а также общие способы установки Apache. И, наконец, как управлять самим сервисом. Давайте начнем с самого начала. Что такое Apache? Apache HTTP Server — это приложение веб-сервера. Веб-сервер доставляет контент, доступ к которому можно получить через Интернет. Это включает в себя документы HTML, мультимедиа, такие как изображения, таблицы стилей CSS и сценарии на стороне клиента, такие как JavaScript. Apache HTTP Server является открытым исходным кодом, что означает, что исходный код свободно доступен для совместной работы.Многие руки облегчают работу, и сотни, если не тысячи, внесли свой код. Разработанная с 1995 года, Apache была основной технологией, отвечающей за первоначальный рост всемирной паутины. Сегодня Apache обслуживает более 54% всех веб-сайтов и имеет веские основания. Это очень надежно, что означает, что он может обрабатывать большие объемы трафика на одном сервере. Apache также может обслуживать различные типы контента с минимальной конфигурацией. Это очень хорошо масштабируется. Таким образом, одно и то же предложение курса может обслуживать крошечные статические сайты для пары запросов в час для крупных корпоративных приложений с сотнями тысяч, если не миллионами обращений в день.Тот факт, что его можно использовать бесплатно, также положительно влияет на его принятие. Apache — это высокомодульная система, означающая, что функциональность может быть легко добавлена ​​в основное приложение. Модули инкапсулируют определенную группу функций, включая поддержку криптографических протоколов, таких как SSL, поддержку серверного языка программирования, такого как PHP, и балансировку нагрузки между несколькими серверами для обработки больших объемов трафика. Apache прошел через несколько основных версий. Знание того, какая версия Apache используется, важно в том смысле, что как включенные функциональные возможности, так и методы настройки отличаются в разных версиях.Версия 1.3 была выпущена с 1998 по 2010 год, когда она была прекращена. Версия 2.0 была запущена в 2000 году и, наконец, была заложена в 2013 году. Два пункта два были доступны с 2005 года и продолжают поддерживаться. Два четвертых — это текущая основная версия, и она существует с 2009 года. Этого достаточно. Посмотрим, с чем мы работаем. Первый шаг — включить виртуальное устройство. Если он еще не запущен, откройте диспетчер виртуальных ящиков. Выберите Apache и нажмите «Пуск». Через мгновение или два сервер будет запущен и работает.Давайте посмотрим, как работает Apache, переключившись на браузер. Перейдите на http локальный хост-порт 8080. Neat. Нам подали классику Льюиса Кэрролла «Приключения Алисы в стране чудес», предоставленную Project Gutenberg. Мы знаем, что Apache работает, и это хорошее начало. Как мы можем узнать, как это было установлено?

,

FAQ — HTTPD — Apache Software Foundation

  • Перейти к содержанию
  • Перейти к сухарям
  • Перейти к заголовку меню
  • Перейти к меню действий
  • Перейти к быстрому поиску
Связанные приложения

Загрузка…

  • пространства
  • Нажмите Enter для поиска

  • Помогите
    • Онлайн помощь
    • Горячие клавиши
    • Feed Builder
    • Что нового
    • Доступные гаджеты
    • О слиянии
  • Авторизоваться
  • зарегистрироваться

HTTPD HTTPD
  • Страницы
  • Блог

Дерево страниц

    ,

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *