Настройка Nginx + Apache и Nginx + PHP-FPM для высокой нагрузки

Настройка Nginx + Apache для высокой нагрузки

Nginx размещается перед Apache в режиме reverse proxy.

Обработка статики — задача Nginx. Динамические запросы передаются на Apache.

Основные шаги

  • Включить proxy_pass в конфиге Nginx для направления PHP-запросов на Apache.
  • Отключить обработку PHP в Nginx, если используется Apache.
  • Настроить кэширование ответов Apache через Nginx с помощью proxy_cache.
  • Ограничить число соединений к Apache: proxy_max_temp_file_size, proxy_buffers.

Оптимизация Apache

  • Использовать MPM Event вместо Prefork.
  • Установить лимиты: MaxRequestWorkers, ServerLimit, MaxConnectionsPerChild.
  • Снизить потребление памяти: отключить ненужные модули.

Безопасность и стабильность

  • Ограничить rate limit в Nginx: limit_req_zone.
  • Задать таймауты: proxy_read_timeout, proxy_connect_timeout.
  • Использовать fail_timeout и max_fails при наличии бэкенд-групп.

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

PHP-FPM работает напрямую с Nginx через FastCGI.

Ключевые параметры

  • Использовать unix socket вместо TCP, если PHP-FPM на том же сервере.
  • Настроить пулы в PHP-FPM: pm = dynamic, pm.max_children, pm.start_servers.
  • Выставить listen.backlog в соответствии с ожидаемой нагрузкой.

Оптимизация Nginx

  • Подключить fastcgi_cache для кэширования ответов.
  • Использовать try_files для корректной маршрутизации.
  • Указать fastcgi_read_timeout, fastcgi_buffers.

Мониторинг

  • Логировать 5xx ошибки и длительные запросы.
  • Контролировать загрузку FPM через pm.status_path.

Похожие вопросы...

Навигация