Ответ
Для обслуживания PHP-приложений Nginx использует PHP-FPM (FastCGI Process Manager). Nginx обрабатывает статические файлы и проксирует запросы к PHP-скриптам через FastCGI протокол на PHP-FPM, который исполняет код.
Базовая настройка:
-
Установите PHP-FPM. Конкретный пакет зависит от версии PHP.
# Для Ubuntu/Debian и PHP 8.2 sudo apt install php8.2-fpm -
Настройте виртуальный хост Nginx. Создайте файл конфигурации, например,
/etc/nginx/sites-available/my-php-app.server { listen 80; server_name myapp.local www.myapp.local; root /var/www/my-php-app/public; # Корневая директория проекта index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } # Обработка PHP-файлов location ~ .php$ { include snippets/fastcgi-php.conf; # Стандартный конфиг FastCGI параметров # Определяем сокет, который слушает PHP-FPM fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Или TCP-соединение: fastcgi_pass 127.0.0.1:9000; } # Запрещаем доступ к скрытым файлам (например, .env) location ~ /. { deny all; } } -
Активируйте конфиг и перезагрузите Nginx.
sudo ln -s /etc/nginx/sites-available/my-php-app /etc/nginx/sites-enabled/ sudo nginx -t # Проверка синтаксиса конфигурации sudo systemctl reload nginx -
Убедитесь, что PHP-FPM запущен и слушает сокет.
sudo systemctl status php8.2-fpm # Проверьте путь к сокету в конфиге PHP-FPM: /etc/php/8.2/fpm/pool.d/www.conf # Параметр 'listen = /run/php/php8.2-fpm.sock'
Ключевые моменты для production:
- Безопасность: Настройте
fastcgi_paramдля ограничения выполнения скриптов, используйтеopen_basedirв PHP. - Производительность: Настройте пулы процессов PHP-FPM (
pm.max_children,pm.start_servers). - Статика: Nginx отлично отдает статические файлы (css, js, изображения) сам, что разгружает PHP-FPM.
- HTTPS: Обязательно настройте SSL/TLS с помощью директив
listen 443 sslиssl_certificate.