Инструменты пользователя

Инструменты сайта

  • Показать исходный текст
  • История страницы
  • Ссылки сюда
  • Оставить на чай
  • Экспорт в PDF
  • Наверх

  • software:linux_server:apache_http_server

    Apache HTTP Server

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

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

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

    Архитектура

    Ядро

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

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

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

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

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

    • Конфигурация сервера (httpd.conf). Директивы конфигурации сгруппированы в три основных раздела:
      • директивы, управляющие процессом Apache в целом (глобальное окружение);
      • директивы, определяющие параметры «главного» сервера, или сервера «по умолчанию», который отвечает на запросы, которые не обрабатываются виртуальными хостами (определяют также установки по умолчанию для всех остальных виртуальных хостов);
      • установки для виртуальных хостов, позволяющие обрабатывать запросы Web одним-единственным сервером Apache, но направлять по раздельным адресам IP или именам хостов.
    • Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
    • Конфигурация уровня каталога (.htaccess).

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

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

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

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

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

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

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

    • Поддержка языков программирования.
    • Добавление функций.
    • Исправление ошибок или модификация основных функций.
    • Усиление безопасности.

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

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

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

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

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

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

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

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

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

    • PHP (mod_php).
    • Python (mod python, mod wsgi).
    • Ruby (apache-ruby).
    • Perl (mod perl).
    • ASP (apache-asp)[12].
    • Tcl (rivet[13])

    Кроме того, 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 ст.18 Федерального закона №38-ФЗ «О рекламе» и ст.3 п.1 Федерального закона №152-ФЗ «О персональных данных»
    40 -12 = 
     
    software/linux_server/apache_http_server.txt · Последнее изменение: 2024/02/28 16:03 — vladpolskiy