0Pricing
PHP Academy · Урок

Настройка Nginx и PHP-FPM

Настройте Nginx как обратный прокси для PHP-FPM при обслуживании приложений PHP

«Настройка Nginx и PHP-FPM» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Почему Nginx + PHP-FPM?

Nginx — это высокопроизводительный веб-сервер и обратный прокси-сервер. PHP-FPM (диспетчер процессов FastCGI) управляет пулом рабочих процессов PHP. Nginx передаёт запросы к PHP в FPM через FastCGI.

Базовый серверный блок Nginx

Минимальная конфигурация Nginx для приложения PHP.

# /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name example.com;
    root /srv/myapp/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

Директива try_files

try_files $uri $uri/ /index.php?$query_string сначала пытается отдать статический файл. Если файл не найден, используется index.php — это включает маршрутизацию через фронт-контроллер (Laravel, Symfony).

Конфигурация пула PHP-FPM

Настройте пул рабочих процессов в /etc/php/8.3/fpm/pool.d/www.conf.

[www]
pm = dynamic
pm.max_children      = 20
pm.start_servers     = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests      = 500  ; recycle workers to prevent leaks

Unix-сокет и TCP

Использование Unix-сокета (fastcgi_pass unix:/run/php/php8.3-fpm.sock) для взаимодействия на одной машине быстрее, чем TCP (127.0.0.1:9000).

HTTPS с Let's Encrypt

Используйте Certbot, чтобы получить бесплатные сертификаты TLS.

$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewal

Сжатие gzip

Включите сжатие gzip, чтобы уменьшить размеры ответов.

# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;

Кэширование статических ресурсов в браузере

Добавьте заголовки управления кэшем для статических файлов.

location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

Ограничение частоты запросов в Nginx

Ограничивайте количество запросов с одного IP с помощью модуля limit_req — это первая линия защиты ещё до запуска PHP.

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}

server {
    location /api/ {
        limit_req zone=one burst=20 nodelay;
    }
}

Заголовки безопасности

Добавьте заголовки безопасности ко всем ответам.

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";

Перезагрузка и перезапуск

После изменения конфигурации Nginx выполните плавную перезагрузку без простоя: nginx -t && nginx -s reload. После изменения конфигурации PHP-FPM выполните: systemctl reload php8.3-fpm.

Итоги

Настройте Nginx с серверным блоком, который через FastCGI указывает на public/index.php. Настройте параметры пула PHP-FPM. Используйте Unix-сокеты. Включите HTTPS, gzip и кэширование статических файлов.

Быстрая проверка

Что делает try_files $uri $uri/ /index.php?$query_string?

Часто задаваемые вопросы

Урок «Настройка Nginx и PHP-FPM» бесплатный?

Да — полный текст урока «Настройка Nginx и PHP-FPM» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Настройка Nginx и PHP-FPM»?

Настройте Nginx как обратный прокси для PHP-FPM при обслуживании приложений PHP Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Настройка Nginx и PHP-FPM»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Настройка Nginx и PHP-FPM
  2. Переменные окружения и файлы .env
  3. Развёртывание с GitHub Actions
  4. Контейнеризация приложения PHP
← Назад к PHP Academy