Переход Apache → Nginx для WordPress: полное руководство и практические примеры
Почему стоит переходить с Apache на Nginx
Apache – проверенный веб‑сервер, но в 2026‑м году Nginx обгоняет его по производительности, потреблению памяти и гибкости при работе с динамическим контентом WordPress. Основные преимущества:
- Асинхронная обработка запросов → до 30% ускорения при большом трафике.
- Встроенный статический кеш и поддержка Memcached без сторонних модулей.
- Более простая конфигурация SSL и HTTP/2.
- Меньшее потребление RAM, что критично на VPS‑хостинге (как правильно выбрать VPS).
Подготовка сервера к миграции
1. Установка Nginx и проверка совместимости
На большинстве дистрибутивов Debian/Ubuntu достаточно выполнить:
sudo apt update
sudo apt install nginx
Убедитесь, что установлен PHP‑FPM (рекомендуем PHP 8.2):
sudo apt install php-fpm php-mysql
2. Перенос файлов сайта
Скопируйте wp‑content, wp‑config.php и остальные файлы в каталог, обслуживаемый Nginx (по‑умолчанию /var/www/html). Не меняйте права доступа: файлы – 644, папки – 755.
3. Отключение Apache
После проверки, что Nginx успешно обслуживает статические файлы, отключите Apache, чтобы избежать конфликта портов:
sudo systemctl stop apache2
sudo systemctl disable apache2
Конвертация .htaccess в правила Nginx
3.1. Основные правила WordPress
В Apache большинство перенаправлений находится в файле .htaccess. Для Nginx их нужно перенести в блок location / конфигурации сайта:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
location ~* .(js|css|png|jpg|jpeg|gif|svg|ico)$ {
expires 30d;
access_log off;
}
}
3.2. Перенос правил из плагинов и кастомных директив
Если в .htaccess присутствуют правила для плагинов (например, WP‑Rocket, Yoast SEO), их нужно адаптировать вручную. Пример редиректа с www на без www:
if ($host ~* ^www.(.*)$) {
return 301 $scheme://$1$request_uri;
}
Для принудительного HTTPS:
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
3.3. Защита wp‑admin и wp‑login
Ограничим доступ к административной панели по IP (пример):
location ~* ^/wp-(admin|login).php$ {
allow 192.168.1.0/24; # ваш диапазон
deny all;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Тестирование и отладка после миграции
4.1. Проверка доступности сайта
Выполните curl -I http://example.com и убедитесь, что получаете статус 200 OK. Затем проверьте https после включения SSL.
4.2. Тестирование пермалинков
Перейдите в админке WordPress → Settings → Permalinks и сохраните текущие настройки. Это заставит WordPress записать правила в базу и проверит их работу через Nginx.
4.3. Логирование ошибок
Включите отладочный лог в /etc/nginx/nginx.conf:
error_log /var/log/nginx/error.log notice;
При появлении 404‑ошибок проверьте, что запросы попадают в блок try_files.
4.4. Интеграция с системой логирования WordPress
Для полного аудита действий пользователей используйте WordPress логирование. Оно поможет отследить, какие запросы приходят к Nginx и как обрабатываются PHP‑скрипты.
4.5. Финальная проверка производительности
Сравните время отклика до и после миграции с помощью ab или wrk. Ожидаемый прирост – 15‑30 % при одинаковой нагрузке.
Полезные ресурсы и дальнейшее развитие
После успешного перехода можно продолжить оптимизацию:
- Настроить объектный кеш Memcached для ускорения запросов к базе.
- Применить 7 проверенных методов ускорения без плагинов (см. статью).
- Регулярно обновлять ядро WordPress, темы и плагины согласно лучшим практикам безопасности.
Следуя этим шагам, ваш сайт получит более стабильную работу, экономию ресурсов и готовность к росту трафика.
❓ Часто задаваемые вопросы
Можно ли использовать один и тот же конфигурационный файл .htaccess в Nginx?
Нет. Nginx не читает .htaccess. Все правила нужно перенести в блоки server/location конфигурации Nginx вручную.
Как включить поддержку .htaccess‑совместимых правил без перезапуска Nginx?
В Nginx нет динамической подгрузки .htaccess. После изменения конфигурации необходимо выполнить nginx -s reload.
Что делать, если после миграции перестали работать кастомные постоянные ссылки?
Проверьте блок try_files $uri $uri/ /index.php?$args; в конфигурации и сохраните настройки пермалинков в админке WordPress.
Нужен ли отдельный сервер для PHP‑FPM при работе с Nginx?
Не обязательно. На небольших проектах PHP‑FPM может работать на том же сервере, но для высокой нагрузки рекомендуется вынести его на отдельный хост.