Налаштування Apache: оптимізація, безпека та кешування

Коли ваш сайт починає гальмувати або видавати помилки при зростанні трафіку, причина часто в неоптимальному налаштуванні веб-сервера. Ми налаштовуємо Apache під ключ: оптимізуємо конфігурацію, посилюємо безпеку та впроваджуємо ефективне кешування. Наша команда бере на себе весь цикл робіт — від аудиту до супроводу, щоб ваше рішення працювало стабільно та масштабувалося разом із бізнесом.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Налаштування Apache: оптимізація, безпека та кешування
Середній
~1 день
Часті запитання

Налаштування Apache: оптимізація, безпека та кешування

Уявіть: інтернет-магазин на WordPress з 1000 унікальних відвідувачів на годину видає 503 помилку. Типова картина — Apache вичерпав MaxClients, а PHP-FPM не налаштований. Без кешування кожен запит до статики (CSS, JS, зображення) завантажує сервер заново — LCP вилітає за 5 секунд. У 90% випадків це вирішується переходом на PHP-FPM через Unix-сокет та увімкненням mod_expires. За 10 років ми налаштували Apache для 500+ проектів: від простих лендінгів до високонавантажених SaaS. Нижче — перевірена схема, яка зменшує TTFB на 30% і знижує споживання пам'яті на 40%.

Неочевидна проблема — .htaccess. На кожен запит Apache перевіряє директорії від кореня до DocumentRoot на наявність .htaccess. Для глибоких структур це до 10 дискових операцій. Ми використовуємо AllowOverride None і переносимо правила в конфіг VirtualHost. Це прискорює віддачу на 15–20%.

Типові проблеми, з якими ми працюємо

  • Повільна віддача статики — без mod_expires і mod_deflate браузер щоразу запитує файли заново, LPC зростає на 30%.
  • Небезпечні VirtualHost — відкриті директорії, застарілі протоколи, відсутність HSTS.
  • Некорректний .htaccess — Laravel не працює через відсутність RewriteRule, .env доступний ззовні.
  • PHP-FPM через TCP, а не Unix-сокет — зайві 20% затримки на localhost.
  • Відсутність rate limiting — один клієнт може викачати весь контент за секунди.

Як ми налаштовуємо Apache під ключ

Наш стек: Apache 2.4+, PHP 8.3 (FPM через socket), Laravel, WordPress, будь-яка CMS. Для кожного проекту створюємо Production-ready конфіг з урахуванням навантаження. Ось приклад для Laravel:

<VirtualHost *:443>
  ServerName example.com
  DocumentRoot /var/www/myapp/current/public
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
  Protocols h2 http/1.1
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
  Header always set X-Frame-Options "DENY"
  <Directory /var/www/myapp/current/public>
    AllowOverride All
    Require all granted
    Options -Indexes
  </Directory>
  <FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost"
  </FilesMatch>
  <FilesMatch "\.(css|js|jpg|png|gif|ico|svg|woff2)$">
    Header set Cache-Control "public, max-age=31536000, immutable"
  </FilesMatch>
  ErrorLog ${APACHE_LOG_DIR}/myapp-error.log
  CustomLog ${APACHE_LOG_DIR}/myapp-access.log combined
</VirtualHost>
Приклад конфігурації для WordPress із додатковою оптимізацією
<VirtualHost *:443>
    ServerName blog.example.com
    DocumentRoot /var/www/wp/current
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/blog.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/blog.example.com/privkey.pem
    Protocols h2 http/1.1
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"
    <Directory /var/www/wp/current>
        AllowOverride None
        Require all granted
        Options -Indexes +FollowSymLinks
        # WordPress rewrite rules
        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
    </Directory>
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost"
    </FilesMatch>
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType image/jpg "access plus 1 year"
        ExpiresByType image/jpeg "access plus 1 year"
        ExpiresByType image/gif "access plus 1 year"
        ExpiresByType image/png "access plus 1 year"
        ExpiresByType text/css "access plus 1 month"
        ExpiresByType application/javascript "access plus 1 month"
    </IfModule>
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/css application/json application/javascript
        DeflateCompressionLevel 6
    </IfModule>
    ErrorLog ${APACHE_LOG_DIR}/wp-error.log
    CustomLog ${APACHE_LOG_DIR}/wp-access.log combined
</VirtualHost>

Що входить у роботу

  • Аудит поточної конфігурації Apache.
  • Налаштування VirtualHost, SSL (Let's Encrypt), HSTS.
  • Оптимізація MPM event, gzip, кешування.
  • .htaccess під вашу CMS (Laravel, WordPress, Drupal).
  • Впровадження rate limiting і заголовків безпеки.
  • Тестування навантаження (ab, siege) і передача документації.
  • Навчання команди роботі з конфігами та підтримка після деплою.

Оптимізація MPM і кешування для високонавантажених проектів

Перший крок — вибір MPM. Для динамічних сайтів з PHP використовуйте mpm_event. Приклад оптимізації:

<IfModule mpm_event_module>
  StartServers 2
  MinSpareThreads 25
  MaxSpareThreads 75
  ThreadLimit 64
  ThreadsPerChild 25
  MaxRequestWorkers 150
  MaxConnectionsPerChild 0
</IfModule>

Потім увімкніть стиснення та кешування:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/json application/javascript
    DeflateCompressionLevel 6
</IfModule>
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 year"
    ExpiresByType application/javascript "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
</IfModule>

Типова помилка — використання mod_php замість PHP-FPM. Перший споживає на 40% більше пам'яті при пікових навантаженнях. Перехід на PHP-FPM знижує TTFB на 15% і збільшує пропускну здатність у 2 рази.

Чому варто використовувати PHP-FPM з Apache?

PHP-FPM через Unix-сокет знижує затримку на localhost на 20% порівняно з TCP-з'єднанням. Крім того, mod_php споживає на 40% більше пам'яті при пікових навантаженнях, оскільки кожен процес Apache тягне інтерпретатор. PHP-FPM дозволяє гнучко керувати пулом воркерів і окремо налаштовувати php.ini.

Чим Apache відрізняється від Nginx і коли його обирати?

Критерій Apache Nginx
Обробка динаміки mod_php (вбудований) PHP-FPM (зовнішній)
.htaccess Підтримується per-directory Не підтримує
Пам'ять на з'єднання Вища (процес на запит) Нижча (event-driven)
Статика Добре з mod_cache Відмінно з коробки
Гнучкість конфігурації Модульна, багато директив Простіше, менше опцій

Apache краще Nginx у 2 випадках: коли критичний .htaccess (shared-хостинг) або використовуються модулі на кшталт mod_ldap, mod_authnz_ldap. В іншому Nginx дає на 30% більше RPS на статиці.

Порівняння MPM-модулів Apache

Параметр mpm_prefork mpm_worker mpm_event
Тип процесів Один потік на запит Кілька потоків на процес Потоки + подієвий цикл
Пам'ять Висока (1 процес = 1 запит) Середня Низька
Сумісність mod_php, старі застосунки PHP-FPM, Python PHP-FPM, Python, Node
Під навантаженням Швидко виснажує пам'ять Краще prefork Оптимальний для високих навантажень

Процес роботи з налаштування Apache

  1. Аналітика: вивчаємо поточний конфіг, навантаження, CMS.
  2. Проектування: підбираємо MPM, модулі, параметри кешу.
  3. Реалізація: налаштовуємо VirtualHost, SSL, .htaccess, rate limiting.
  4. Тестування: перевіряємо LCP, CLS, TTFB через Lighthouse, навантажувальне тестування.
  5. Деплой: застосовуємо конфіг, моніторимо логи, передаємо документацію.

Типові помилки, яких ми уникаємо:

  • Відсутність Header always set X-Content-Type-Options "nosniff".
  • Неправильні права на DocumentRoot (має бути 755, не 777).
  • Використання mod_php замість PHP-FPM — на 40% більше споживання пам'яті.

Терміни орієнтовно

Базове налаштування Apache з PHP-FPM займає від 1 дня. Повний цикл з оптимізацією, безпекою та навантажувальним тестуванням — до 3 днів. Вартість розраховується індивідуально. Замовте аудит конфігурації — оцінимо проект і запропонуємо рішення під ключ.

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

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060