NEW CASE
Кейс «Адвокат Ильичёв Сергей Дмитриевич» — сайт-визитка адвокатской практики

Создаем цифровые решения, которые работают на бизнес


Позвоните нам +38 (066) 35-14-529

Сделаем первый шаг к вашему сайту — напишите нам

Закрыть
BB STUDIO 8 мин чтения
Обновлено:

Apache или Nginx + PHP-FPM: какой режим PHP выбрать для сайта на хостинге

Хостинг и техническое
Apache или Nginx + PHP-FPM: какой режим PHP выбрать для сайта на хостинге

В панели хостинга рядом с версией PHP часто есть ещё одна настройка — режим работы PHP: «модуль Apache» или «FastCGI (Nginx + PHP-FPM)». Оба варианта рабочие, и сайт откроется в любом из них. Но от выбора зависит, будут ли работать правила из файла .htaccess, как сайт ведёт себя под нагрузкой и что придётся настроить при переезде.

Объясняем разницу без лишней теории: как работает каждый режим, что будет с .htaccess, когда включать модуль PageSpeed и что выбрать для WordPress, Joomla, Drupal, PrestaShop, OpenCart и 1С-Битрикс.

Короткий ответ

Если сайт опирается на .htaccess — а так устроено большинство CMS, — при переезде безопаснее всего модуль Apache: ЧПУ, редиректы и защита папок работают как раньше. Nginx + PHP-FPM тратит меньше ресурсов на каждый запрос и стабильнее держит пики трафика, но .htaccess игнорирует: правила нужно перенести в конфигурацию Nginx.

Практичный подход: переехать в режиме Apache, убедиться, что всё работает, а затем при необходимости перейти на Nginx + PHP-FPM, перенеся правила и проверив редиректы.

Как работает каждый режим

Модуль Apache

PHP работает внутри веб-сервера Apache как его модуль. На большинстве современных хостингов перед Apache стоит Nginx: он сам отдаёт статические файлы — изображения, CSS, JavaScript, — а запросы к PHP передаёт дальше, в Apache. Apache при каждом запросе читает файлы .htaccess в папках сайта, поэтому любые правила можно изменить, просто отредактировав файл.

FastCGI: Nginx + PHP-FPM

Nginx обрабатывает все запросы сам, а PHP-код выполняет отдельный пул процессов PHP-FPM через протокол FastCGI. Apache в этой схеме вообще нет, поэтому и .htaccess никто не читает: правила маршрутизации, редиректы и запреты описывают в конфигурации Nginx. Зато каждый запрос обходится дешевле, а под нагрузкой сервер ведёт себя предсказуемее.

Сравнение режимов

Критерий Модуль Apache Nginx + PHP-FPM
Файлы .htaccess работают игнорируются, правила переносят в конфигурацию Nginx
Отдача статики быстро, если перед ним стоит Nginx быстро
Память и пики трафика больше ресурсов на запрос экономнее, стабильнее под нагрузкой
Настройки PHP для сайта панель хостинга или директивы в .htaccess панель хостинга или файл .user.ini
Переезд старого сайта без изменений в правилах правила нужно адаптировать
Кому подходит большинству сайтов на CMS, особенно при переезде магазинам и сайтам с большим трафиком, когда правила уже перенесены

Что делает .htaccess и что перестанет работать на Nginx

Файл .htaccess — это набор инструкций для Apache, который CMS обычно кладёт в корень сайта. На Nginx без переноса перестанут работать:

  • ЧПУ — правило, которое передаёт все «красивые» адреса на index.php. Без него внутренние страницы отдают 404;
  • редиректы — с http на https, с www на адрес без www, со старых URL на новые;
  • защита служебных файлов и папок — конфигураций, логов, резервных копий, которые не должны открываться из браузера;
  • доступ по паролю к админке или тестовой копии через .htpasswd;
  • заголовки кеширования и безопасности, а также сжатие;
  • директивы PHP вроде php_value memory_limit — в режиме PHP-FPM их задают в панели или в .user.ini.

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

Как выглядят правила для Nginx

Для большинства CMS базовое правило ЧПУ в Nginx — одна директива. Для WordPress и Joomla оно выглядит так:

location / {
    try_files $uri $uri/ /index.php?$args;
}

Для Drupal — почти так же, но без проверки каталогов ($uri/):

location / {
    try_files $uri /index.php?$query_string;
}

Для 1С-Битрикс запросы, которым не соответствует ни один файл, передают на /bitrix/urlrewrite.php (упрощённо):

location / {
    try_files $uri $uri/ @bitrix;
}
location @bitrix {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
    fastcgi_pass php-fpm;
}

А запрет доступа к скрытым служебным файлам, кроме папки .well-known для SSL-сертификатов, — так:

location ~ /\.(?!well-known) {
    deny all;
}

У PrestaShop и OpenCart наборы правил длиннее — для изображений товаров, ЧПУ категорий и защиты служебных папок, — а точные правила зависят от версии и модулей. На виртуальном хостинге конфигурацию Nginx обычно меняет поддержка: на нашем хостинге эти правила под ваш сайт настраиваем мы.

Модуль PageSpeed: когда включать

PageSpeed — модуль веб-сервера, который оптимизирует страницы «на лету»: минифицирует и объединяет CSS и JavaScript, пережимает изображения, может конвертировать их в WebP и добавлять отложенную загрузку. Для старого сайта без современной сборки фронтенда это быстрый способ уменьшить вес страниц без правок в коде.

Но есть и нюансы:

  • первые запросы после изменений обрабатываются медленнее, пока модуль готовит оптимизированные версии файлов;
  • он может конфликтовать с плагинами оптимизации в самой CMS: двойная минификация и объединение часто ломают скрипты;
  • некоторые темы и конструкторы страниц после объединения JavaScript работают с ошибками;
  • сам модуль давно не получает крупных обновлений, поэтому включать его стоит точечно и после проверки.

Правильный порядок: замерить скорость до изменений, включить PageSpeed на копии или в спокойное время, проверить страницы и формы и замерить ещё раз — аудитом скорости или по методике из статьи о TTFB и Core Web Vitals. Оставляйте модуль, только если результат стал лучше.

OPcache работает в обоих режимах

Кеширование байт-кода OPcache не зависит от режима: и модуль Apache, и PHP-FPM держат скомпилированный PHP-код в памяти, поэтому CMS не перекомпилирует свои файлы при каждом запросе. Проверьте, что OPcache включён для вашей версии PHP, — это один из самых дешёвых способов уменьшить время ответа сервера.

Что выбрать для своей CMS

Платформа Модуль Apache Nginx + PHP-FPM
WordPress проще всего при переезде хороший выбор: правило ЧПУ простое, плагины кеша работают
Joomla достаточно переименовать htaccess.txt в .htaccess после переноса правил ЧПУ и защиты
Drupal собственный .htaccess Drupal работает сразу с рекомендуемыми правилами для Drupal
PrestaShop .htaccess генерирует сам PrestaShop для нагруженных магазинов, правила сложнее
OpenCart достаточно переименовать .htaccess.txt в .htaccess после настройки правил для SEO-адресов
1С-Битрикс самый простой и распространённый вариант через правила для urlrewrite.php
Laravel и собственные PHP-проекты работает с .htaccess в папке public естественный выбор: корень сайта — папка public

На нашем хостинге режим PHP выбирается для каждого сайта отдельно, вместе с версией PHP от 5.6 до 8.5. Для конкретных платформ есть отдельные страницы: WordPress, Joomla, Drupal, PrestaShop, 1С-Битрикс, а также Laravel и PHP.

Как безопасно сменить режим PHP

  1. Сделайте резервную копию файлов и базы.
  2. Найдите все файлы .htaccess на сайте — не только в корне, но и во вложенных папках.
  3. Перенесите правила в конфигурацию Nginx, а директивы PHP — в настройки панели или .user.ini.
  4. Переключите режим на копии сайта или в часы с минимальным трафиком.
  5. Проверьте внутренние страницы, редиректы с http и www, админку, формы, корзину и закрытые папки.
  6. Если что-то не так, верните прежний режим — на хостинге с выбором режима это занимает минуту — и уже потом ищите причину.

Вывод

Модуль Apache — режим с лучшей совместимостью: правила .htaccess работают, и переезд проходит без сюрпризов. Nginx + PHP-FPM быстрее и экономнее, но требует перенести правила в конфигурацию. PageSpeed — полезный инструмент для старых сайтов, если включать его осторожно и измерять результат. А версию PHP для своей CMS подскажет наша таблица совместимости PHP.

Если не хочется разбираться с правилами Nginx самостоятельно, напишите BB STUDIO: бесплатно перенесём сайт на наш хостинг, подберём режим и настроим правила под ваш сайт.

Частые вопросы

Под нагрузкой обычно быстрее Nginx + PHP-FPM. Но для небольшого сайта выигрыш от смены режима часто меньше, чем от OPcache, кеша страниц или оптимизированных изображений. Поэтому сначала разберитесь с этим, а режим меняйте, когда правила уже перенесены.

Нет. Nginx не читает файлы .htaccess: все правила — ЧПУ, редиректы, запреты доступа — нужно описать в его конфигурации. Именно поэтому после переключения на Nginx без переноса правил внутренние страницы часто отдают 404.

Для переезда — модуль Apache: всё работает без изменений. Для постоянной работы подходят оба режима; Nginx + PHP-FPM выгоднее для сайтов с большим трафиком, а правило ЧПУ для WordPress в нём — одна строка.

PHP-FPM — это менеджер процессов PHP, который работает отдельно от веб-сервера и получает запросы через протокол FastCGI. Он держит пул готовых процессов, гибко управляет их количеством и позволяет задавать настройки PHP отдельно для каждого сайта.

Да, если правила перенесены заранее и проверены на копии. Само переключение в панели занимает секунды, а если что-то пойдёт не так, прежний режим так же быстро можно вернуть.
Оцените статью
Это помогает нам писать лучшие материалы
Будьте первым, кто оценит 5.0 из 5 0 голосов
Поделиться статьёй:

Похожие статьи

Давайте вместе создадим что-то потрясающее

Стать клиентомСтать клиентом
Telegram Viber Позвонить