Помощь

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 уже установлен. Если это не так, необходимо выполнить следующие действия:

  1. В разделе НастройкиКонфигурация ПО выберите Веб-сервер и нажмите Изменить.
  2. Убедитесь, что выбраны пункты Nginx и PHP-FPM FastCGI.
  3. Сохраните изменения и дождитесь завершения установки.
  1. В первую очередь, убедитесь, какая версия PHP используется на вашем сайте в данный момент и в каком режиме работает PHP. Эту информацию можно найти в разделе Сайты, если вы вошли как пользователь root:

 

  1. Перейдите в раздел Пользователи, выберите нужного пользователя и нажмите Изменить.
  2. На вкладке Доступ отметьте пункт Может использовать PHP в режиме FastCGI (Nginx + PHP-FPM).
  3. Перейдите в раздел Сайты:
  • Дважды кликните по нужному сайту.
  • На вкладке Обработчик PHP выберите режим FastCGI (Nginx + PHP-FPM).
  • Укажите версию PHP, которая используется на сайте (см. шаг 1).

 

  1. Проверьте работоспособность страниц сайта. Обычно большинство страниц, за исключением главной, могут выдавать ошибку 404. В таком случае вам потребуется выполнить дополнительные настройки, включая настройку перенаправления.
  2. Перейдите в раздел Сайты, выделите строку с соответствующим доменом и нажмите на три точки для открытия дополнительных опций. Затем выберите Файлы конфигурации.

 

  1. Внесите соответствующие изменения в файл конфигурации в зависимости от используемой CMS, следуя инструкциям ниже:

Wordpress, Joomla

В конфигурационном файле найдите блок, начинающийся с строки:

location / {

Сразу после этой строки добавьте следующий редирект:

try_files $uri $uri/ /index.php?q=$uri&$args;

Opencart

В конфигурационном файле найдите блок, начинающийся с строки:

location / {

Сразу после этой строки добавьте следующий редирект:

  • Кликните дважды по нужному сайту.
  • На вкладке Обработчик PHP выберите режим работы FastCGI (Nginx + PHP-FPM).
  • Укажите версию PHP, которая в настоящее время используется на сайте (см. шаг 1).

 

  1. Проверьте работоспособность страниц сайта. Обычно большинство страниц, за исключением главной, могут выдавать ошибку 404. В таком случае вам потребуется выполнить дополнительные настройки, включая настройку перенаправления.
  2. Перейдите в раздел Сайты, выделите строку с соответствующим доменом и нажмите на три точки для открытия дополнительных опций. Затем выберите Файлы конфигурации.

 

  1. Внесите соответствующие изменения в файл конфигурации в зависимости от используемой 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;
}
  1. Сохраните изменения и проверьте функциональность сайта.

Остались вопросы - пишите