PHP в режиме Nginx + PHP-FPM: настройка и особенности
Режим FastCGI (Nginx + PHP-FPM) — это наиболее производительный режим работы PHP, который часто применяется для оптимизации и ускорения работы сайта.
Однако, при переводе сайта на PHP-FPM потребуется выполнить дополнительные настройки:
- Правила, указанные в .htaccess, перестанут действовать. Вам придется перенести аналогичные директивы в конфигурационный файл Nginx. Чтобы упростить этот процесс, можно воспользоваться онлайн-сервисами, которые конвертируют директивы .htaccess для Nginx.
- Если вы используете CMS, вам также потребуется внести изменения в конфигурационный файл. Ниже мы предоставим настройки для CMS, таких как WordPress, Joomla, Opencart и Битрикс.
Перевод сайта на PHP-FPM
Ниже приведены шаги, которые следует выполнить при переводе сайта на PHP-FPM. Предполагается, что Nginx уже установлен. Если это не так, необходимо выполнить следующие действия:
- В разделе Настройки — Конфигурация ПО выберите Веб-сервер и нажмите Изменить.
- Убедитесь, что выбраны пункты Nginx и PHP-FPM FastCGI.
- Сохраните изменения и дождитесь завершения установки.
- В первую очередь, убедитесь, какая версия PHP используется на вашем сайте в данный момент и в каком режиме работает PHP. Эту информацию можно найти в разделе Сайты, если вы вошли как пользователь root:
- Перейдите в раздел Пользователи, выберите нужного пользователя и нажмите Изменить.
- На вкладке Доступ отметьте пункт Может использовать PHP в режиме FastCGI (Nginx + PHP-FPM).
- Перейдите в раздел Сайты:
- Дважды кликните по нужному сайту.
- На вкладке Обработчик PHP выберите режим FastCGI (Nginx + PHP-FPM).
- Укажите версию PHP, которая используется на сайте (см. шаг 1).
- Проверьте работоспособность страниц сайта. Обычно большинство страниц, за исключением главной, могут выдавать ошибку 404. В таком случае вам потребуется выполнить дополнительные настройки, включая настройку перенаправления.
- Перейдите в раздел Сайты, выделите строку с соответствующим доменом и нажмите на три точки для открытия дополнительных опций. Затем выберите Файлы конфигурации.
- Внесите соответствующие изменения в файл конфигурации в зависимости от используемой CMS, следуя инструкциям ниже:
Wordpress, Joomla
В конфигурационном файле найдите блок, начинающийся с строки:
location / {
Сразу после этой строки добавьте следующий редирект:
try_files $uri $uri/ /index.php?q=$uri&$args;
Opencart
В конфигурационном файле найдите блок, начинающийся с строки:
location / {
Сразу после этой строки добавьте следующий редирект:
- Кликните дважды по нужному сайту.
- На вкладке Обработчик PHP выберите режим работы FastCGI (Nginx + PHP-FPM).
- Укажите версию PHP, которая в настоящее время используется на сайте (см. шаг 1).
- Проверьте работоспособность страниц сайта. Обычно большинство страниц, за исключением главной, могут выдавать ошибку 404. В таком случае вам потребуется выполнить дополнительные настройки, включая настройку перенаправления.
- Перейдите в раздел Сайты, выделите строку с соответствующим доменом и нажмите на три точки для открытия дополнительных опций. Затем выберите Файлы конфигурации.
- Внесите соответствующие изменения в файл конфигурации в зависимости от используемой CMS, следуя инструкциям ниже:
Wordpress, Joomla
В конфигурационном файле найдите блок, начинающийся со строки:
location / {
Сразу после этой строки добавьте следующий редирект:
try_files $uri $uri/ /index.php?q=$uri&$args;
Opencart
В конфигурационном файле найдите блок, начинающийся со строки:
location / {
Сразу после этой строки добавьте следующий редирект:
if (!-e $request_filename){
rewrite ^/(.+)$ /index.php?_route_=$1 last;
}
Обратите внимание, что при использовании SSL у вас будет два блока location в файле, и необходимо добавить редирект в оба блока.
Битрикс
В конфигурационном файле найдите следующий блок:
location @php {
Под этим блоком (не под данной строкой) вставьте блок с редиректом:
location ~* /\.ht {
deny all;
}
location ~ ^/(?!(\.well-known)) {
if (!-e $request_filename) {
rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}
}
if (!-f $request_filename) {
rewrite ^(.*)/index.php$ $1/ redirect;
}
- Сохраните изменения и проверьте функциональность сайта.