Ответ
Базовая настройка Nginx для работы с PHP через PHP-FPM заключается в правильной конфигурации server-блока и передачи PHP-скриптов FastCGI-процессу.
1. Структура конфигурации (Debian/Ubuntu):
- Основной конфиг:
/etc/nginx/nginx.conf(глобальные настройки: worker_processes, events, http-блок). - Конфиги сайтов:
/etc/nginx/sites-available/. Активируются через симлинк в/etc/nginx/sites-enabled/.
2. Пример конфигурации сервера для PHP (/etc/nginx/sites-available/myapp):
server {
listen 80;
# Укажите ваши домены
server_name myapp.local www.myapp.local;
# Корневая директория проекта (часто 'public' для фреймворков)
root /var/www/myapp/public;
index index.php index.html index.htm;
# Обработка статических файлов
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Обработка PHP-файлов
location ~ .php$ {
# Стандартные FastCGI параметры
include snippets/fastcgi-php.conf;
# Адрес сокета или TCP-порта PHP-FPM пула
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
# Или для TCP: fastcgi_pass 127.0.0.1:9000;
}
# Запрет доступа к скрытым файлам (например, .env, .git)
location ~ /. {
deny all;
}
# Логирование
access_log /var/log/nginx/myapp_access.log;
error_log /var/log/nginx/myapp_error.log;
}
3. Ключевые директивы:
try_files: Проверяет существование запрошенного URI как файла или директории, и если их нет, перенаправляет запрос наindex.php(паттерн front-controller).fastcgi_pass: Самая важная директива, указывающая Nginx, куда передавать PHP-запросы. Должна совпадать с настройками listen в пуле PHP-FPM (файл/etc/php/8.2/fpm/pool.d/www.conf).include snippets/fastcgi-php.conf: Подключает стандартный набор параметров FastCGI (переменныеSCRIPT_FILENAME,PATH_INFOи др.).
4. Активация и проверка:
# Создать симлинк для активации сайта
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
# Проверить синтаксис конфигурации
sudo nginx -t
# Применить изменения
sudo systemctl reload nginx