Що таке Apache HTTP Server: 📜 Надійний ветеран веб-серверів

Коли я починав свій шлях у веб-розробці, питання “який веб-сервер використовувати?” практично не стояло. Відповідь була одна — Apache. Цей проєкт з відкритим вихідним кодом, запущений ще у 1995 році, довгий час був беззаперечним лідером і, по суті, побудував значну частину того інтернету, який ми знаємо сьогодні. Хоча Nginx сьогодні перехопив пальму першості за швидкістю, Apache залишається надзвичайно популярним, надійним та гнучким рішенням.

У цій статті я хочу віддати належне цьому “патріарху” веб-серверів. Ми розберемося, як він працює, в чому його унікальні переваги (так, вони є!), де він все ще незамінний, і як його базово налаштувати.

 

Apache: як він працює? Архітектура MPM

На відміну від Nginx з його асинхронною моделлю, Apache традиційно використовує модель “процес або потік на з’єднання”. Те, як саме він керує цими процесами та потоками, визначається MPM (Multi-Processing Module) — модулем мультиобробки. Це серце Apache, яке можна змінювати залежно від потреб.

Найпоширеніші MPM:

  • Prefork (Класика): Створює окремий процес для кожного з’єднання. Дуже стабільний і безпечний (ізоляція процесів), але споживає багато пам’яті. Це був стандарт для роботи зі старим mod_php, оскільки багато PHP-розширень не були потокобезпечними.
  • Worker (Гібрид): Створює кілька процесів, а кожен процес запускає багато потоків для обробки з’єднань. Значно ефективніший за Prefork у плані пам’яті, але вимагає потокобезпечних модулів.
  • Event (Сучасний стандарт Apache): Подальший розвиток Worker. Він також використовує потоки, але має спеціальний потік для обробки keep-alive з’єднань. Це дозволяє робочим потокам звільнятися швидше для обробки нових запитів, що робить його ефективнішим при великій кількості одночасних з’єднань. Це відповідь Apache на виклик Nginx.

Вибір MPM залежить від ваших завдань та операційної системи, але сьогодні для нових установок зазвичай рекомендується Event MPM.

 

Сильні сторони Apache: чому він досі актуальний?

Незважаючи на перевагу Nginx у швидкості обробки статики та великої кількості з’єднань, Apache має кілька козирів у рукаві:

 

1. ✨ Файл .htaccess — Гнучкість на рівні папки

Це, мабуть, найголовніша перевага Apache, особливо у світі віртуального хостингу. Файл .htaccess дозволяє вам змінювати конфігурацію сервера (правила перенаправлення, контроль доступу, налаштування PHP) на рівні окремої папки, не маючи доступу до головного конфігураційного файлу сервера.

 

Як працює .htaccess?

Коли надходить запит, Apache перевіряє наявність файлу .htaccess у поточній папці та у всіх батьківських папках аж до кореня сайту. Якщо файл знайдено, Apache читає його та застосовує вказані директиви “на льоту”.

Це неймовірно зручно для користувачів віртуального хостингу, але має свою ціну: Apache змушений постійно шукати та читати ці файли при кожному запиті, що знижує продуктивність. Nginx не підтримує аналог .htaccess саме з міркувань швидкодії.

 

2. 🧩 Величезна кількість модулів

За десятиліття існування для Apache було створено неймовірну кількість модулів для вирішення найрізноманітніших завдань:

  • mod_rewrite: Потужний інструмент для переписування URL (основа “людинозрозумілих” URL у багатьох CMS).
  • mod_php: Класичний спосіб інтеграції PHP (хоча сьогодні PHP-FPM є кращим вибором).
  • mod_security: Популярний веб-фаєрвол (WAF).
  • mod_ssl: Для роботи з HTTPS.
  • …та сотні інших.

Хоча Nginx теж має модулі, їхня екосистема значно менша, і часто додавання стороннього модуля вимагає перекомпіляції Nginx.

 

3. 📜 Гнучкість конфігурації та сумісність

Конфігураційні файли Apache (зазвичай httpd.conf або apache2.conf та файли віртуальних хостів) мають дуже гнучкий синтаксис. Завдяки своїй довгій історії, Apache чудово сумісний практично з будь-яким ПЗ та операційною системою.

 

4. 📚 Документація та спільнота

За роки існування накопичилася величезна база документації, форумів, статей та готових рішень для Apache. Знайти відповідь на будь-яке питання зазвичай не складає труднощів.

 

Слабкі сторони Apache (у порівнянні з Nginx)

  1. Продуктивність під високим навантаженням: Особливо при використанні старих MPM (Prefork), Apache споживає значно більше пам’яті та гірше справляється з великою кількістю одночасних з’єднань, ніж Nginx.
  2. Повільніша віддача статики: Nginx спроєктований для максимально швидкої віддачі статичних файлів, Apache тут програє.
  3. Вплив .htaccess на швидкість: Зручність .htaccess обертається додатковими перевірками файлової системи при кожному запиті.

 

Практика: базова конфігурація Apache для сайту на PHP (з mod_php)

Давайте я покажу приклад простого віртуального хоста для Apache, який використовує класичний mod_php. Цей підхід зараз не є найпродуктивнішим (Nginx + PHP-FPM краще), але він досі часто зустрічається на віртуальних хостингах.

Файл конфігурації (наприклад, /etc/apache2/sites-available/my-site.conf):

<VirtualHost *:80>
    # Ім'я сервера
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com
    # Коренева папка сайту
    DocumentRoot /var/www/my-site/public
    # Налаштування логів
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    # Налаштування для папки сайту
    <Directory /var/www/my-site/public>
        # Дозволяємо використання .htaccess
        AllowOverride All
        # Дозволяємо доступ
        Require all granted        
        # Налаштування для PHP (якщо використовується mod_php)
        # Наприклад, увімкнення відображення помилок для розробки
        php_flag display_errors on
        php_value error_reporting E_ALL
    </Directory>
</VirtualHost>
# Конфігурація для HTTPS (порт 443) буде схожою, 
# але з додаванням директив SSLEngine, SSLCertificateFile тощо.
# Про перехід на HTTPS я писав тут: 
# https://sebweo.com/yak-perejti-z-http-na-https-prosta-instruktsiya-vstanovlennya-ssl/

Після створення конфігурації її потрібно увімкнути (sudo a2ensite my-site.conf) та перезавантажити Apache (sudo systemctl reload apache2).

 

Висновок: надійний “робочий кінь”, який ще послужить

Хоча Nginx вирвався вперед у гонці за максимальну продуктивність, Apache HTTP Server залишається потужним, гнучким та неймовірно стабільним рішенням. Його головні козирі — це простота налаштування через .htaccess (що робить його королем віртуального хостингу) та величезна екосистема модулів.

На мою думку, вибір між Nginx та Apache залежить від конкретного завдання. Для високопродуктивних сайтів з великою кількістю статики та одночасних з’єднань краще підійде Nginx. Але якщо вам потрібна максимальна гнучкість конфігурації на рівні користувача або специфічні модулі Apache, він все ще може бути чудовим вибором. А часто найкращим рішенням є їхня комбінація: Nginx як фронтенд, а Apache як бекенд.

 

Recent Posts

Що таке Nginx: чому він швидший за Apache? 🚀 | Інструкція + Конфіги

Коли мова заходить про веб-сервери, два імені завжди на слуху: Apache та Nginx. Apache —…

1 день ago

Знайомство з Docker для веб-розробника 🐳 | Встановлення та основи

У світі веб-розробки ми постійно стикаємося з проблемою: "А в мене на комп'ютері все працює!".…

2 дні ago

Навіщо веб-розробнику віртуальна машина (VM) 🖥️

На зорі моєї кар'єри веб-розробника все було відносно просто: встановив локальний сервер (пам'ятаєте Denwer?), поклав…

3 дні ago

Що таке OPcache: ⚡ Прискорюємо PHP та WordPress

Якщо ви коли-небудь цікавилися, як прискорити свій сайт на WordPress, ви, напевно, чули про "кешування".…

4 дні ago

Що таке XML: невидимий інструмент для вашого сайту та SEO 📄

Коли ми говоримо про веб-розробку, перше, що спадає на думку — це HTML та CSS.…

5 днів ago

Що таке якісний контент 📝 і як його розпізнати?

У світі SEO є фраза, яку повторюють так часто, що вона вже стала кліше: "Content…

6 днів ago