Оптимизированный VirtualHost Apache 2.4 для WordPress с HTTP/2, mod_expires и mod_deflate

Обновлено: Сентябрь 2026 Стек: Apache 2.4.58+, PHP 8.2 (PHP-FPM via mod_proxy_fcgi), WordPress 6.x Проверено: Production-Ready

Производительный конфиг Apache 2.4 VirtualHost для WordPress: протоколы h2 и http/1.1, сжатие mod_deflate, кэш mod_expires, защита wp-config.

Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/apache2/sites-available/wp-apache.example.com.conf
# /etc/apache2/sites-available/wp-apache.example.com.conf
<VirtualHost *:80>
    ServerName wp-apache.example.com
    ServerAlias www.wp-apache.example.com
    Redirect permanent / https://wp-apache.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName wp-apache.example.com
    DocumentRoot /var/www/wp-apache.example.com/public_html

    Protocols h2 http/1.1

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/wp-apache.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/wp-apache.example.com/privkey.pem

    # Подключение PHP-FPM через сокет
    <FilesMatch \\.php$>
        SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
    </FilesMatch>

    <Directory /var/www/wp-apache.example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # Сжатие mod_deflate
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
    </IfModule>

    # Кэширование mod_expires
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 month"
        ExpiresByType image/webp "access plus 1 year"
        ExpiresByType image/jpeg "access plus 1 year"
        ExpiresByType text/css "access plus 1 year"
        ExpiresByType application/javascript "access plus 1 year"
    </IfModule>

    # Защита wp-config.php
    <Files wp-config.php>
        Require all denied
    </Files>

    ErrorLog ${APACHE_LOG_DIR}/wp-apache.example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/wp-apache.example.com_access.log combined
</VirtualHost>

Разбор ключевых директив конфигурации

Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).

Директива / Блок Рекомендуемое значение Зачем нужно и системное влияние (CPU / RAM / I-O)
Protocols h2 http/1.1 HTTP/2 протокол Включает мультиплексирование HTTP/2 в Apache 2.4 с модулем mpm_event, ускоряя загрузку параллельных ресурсов.
SetHandler 'proxy:unix:...' mod_proxy_fcgi сокет Использует быстрый PHP-FPM вместо устаревшего медленного mod_php.
client_max_body_size 64M / 128M Устанавливает максимальный размер загружаемых файлов через веб-формы и медиабиблиотеку CMS.
gzip_comp_level 5 Оптимальный уровень сжатия текстовых ресурсов (CSS/JS/HTML), обеспечивающий до 75% экономии трафика без избыточной нагрузки на процессор.

Рекомендуемые системные требования VDS под этот стек

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

Оптимальный сайзинг: 2 vCPU, 4 GB RAM, 50 GB NVMe
Расчетная нагрузка: до 20 000 хостов/сутки
2 CPU / 4 GB NVMe
⚡

Timeweb Cloud

Рекомендуемые ресурсы
2 vCPU / 4 GB RAM / 50 GB NVMe
2 vCPU / 4 GB RAM
🔷

Selectel

Рекомендуемые ресурсы
2 vCPU / 4 GB RAM / 50 GB NVMe
Turbo 4 GB
🟠

Beget

Рекомендуемые ресурсы
2 vCPU / 4 GB RAM / 50 GB NVMe

Онлайн-утилиты SysKit для проверки этого сервера

Протестируйте корректность применения конфигурации прямо сейчас в один клик.

Частые ошибки при настройке и их решение (FAQ)

Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.

Apache не запускается после включения Protocols h2
Убедитесь, что отключен старый MPM prefork (`a2dismod mpm_prefork`) и включен MPM event (`a2enmod mpm_event proxy_fcgi http2`).
Как проверить конфигурацию Nginx перед перезагрузкой?
Всегда выполняйте команду `nginx -t`. Если синтаксис верный, примените настройки командой `systemctl reload nginx` без остановки сайта.
Что делать при ошибке 413 Request Entity Too Large?
Увеличьте директиву `client_max_body_size 128M;` в блоке `http {}` или `server {}` и перезагрузите веб-сервер.