Перейти к содержимому

Статья 50 из 75

Гайды

PHP-FPM вместе с Nginx

Nginx сам PHP не исполняет. Запрос .php уходит в php-fpm по UNIX-сокету. Неверный путь сокета — классический 502.

Окно терминала
apt install -y nginx php-fpm php-cli php-mysql
php -v
ls /run/php/

В Debian/Ubuntu сокет обычно /run/php/php8.3-fpm.sock (цифра — ваша версия).

index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.ht { deny all; }
Окно терминала
nginx -t && systemctl reload nginx
systemctl status php8.3-fpm

В /etc/php/*/fpm/pool.d/www.conf: pm = ondemand на маленьких тарифах экономит RAM; pm.max_children не ставьте «50» на 1 ГБ. Смотрите memory_limit в php.ini — WordPress с 128M часто упирается в админке.

Права: файлы сайта — www-data, не root. Сокет должен быть доступен пользователю Nginx (www-data).

502 после обновления PHP: в конфиге остался старый php8.2-fpm.sock. 504 — скрипт тупит или MySQL лежит, не «Nginx сломался».

Связано: WordPress, Let’s Encrypt.