Назад | Перейти на главную страницу

Nginx + php-fpm VS Nginx как обратный прокси для Apache

Может ли кто-нибудь просветить меня, в чем преимущество использования NginX в качестве обратного прокси для Apache. Люди предлагают так, чтобы статический контент обрабатывался nginx, а динамический контент (файлы php) передавался Apache.

  1. Разве нельзя позволить php-fcgi / php-fpm обрабатывать эти файлы PHP гораздо более разумно, чем позволить Apache mod_php обрабатывать их?

  2. Каковы преимущества (с точки зрения производительности)

  3. Если я выберу обратный прокси, мне нужно будет перезаписать nginx или .htaccess из apache будет работать как есть? (потому что это обратный прокси-сервер, поэтому вызовы направляются в apache, верно?)

TY заранее

Обратное проксирование медленнее и, как правило, хуже, однако некоторые причины его использования - поддерживать (некоторую) совместимость с файлами .htaccess (которые вам придется писать (и это не всегда практично), если вы используете чистую настройку nginx) или если вам требуются определенные модули apache. (Некоторые могут возразить, что если у вас есть эти требования, проще просто использовать apache.)

  1. PHP-FPM с nginx будет предпочтительным решением - вы получите быстрое обслуживание статических файлов nginx и хорошую производительность PHP без дополнительных накладных расходов, проксирования или (обычно) значительного использования памяти apache.
  2. nginx + PHP-FPM (обычно) быстрее и использует меньше памяти. Nginx + Apache + FastCGI / FPM по-прежнему будет быстро обслуживать статические файлы, но будет иметь дополнительные накладные расходы на динамические файлы (не так плохо, как mod_php, но хуже, чем если бы вы исключили apache).
  3. Вам понадобится немного и того, и другого - nginx должен знать, как работать с путями (например, для обслуживания статических файлов, запрета доступа к .htaccess и т. Д.), А apache должен будет знать, как обрабатывать файлы. В некоторых случаях, если ваш файл .htaccess не относится к статическим файлам (поэтому каждый запрос, который требует переписывания, будет идти в apache), тогда может быть приемлемо просто запретить доступ к определенным местам, а все остальное сделает apache. через .htaccess - он не кажется идеальным, будет стоить немного с точки зрения производительности, а его надежность вызывает сомнения - но он может работать при простой настройке).

Если можете, используйте прямую установку nginx + PHP-FPM. Если вы не можете, хотя обратное проксирование может иметь некоторые преимущества, подумайте о последствиях, особенно если вы зависите от файлов .htaccess.

Я бы сказал, что это наоборот: исключение Apache из смеси повысит производительность. Вы бы сохранили Apache, если вам нравятся некоторые другие модули, которые предоставляет Apache, или если у вас есть какая-то внешняя причина продолжать использовать Apache для вашего динамического контента.

Допустимо позволить Apache обрабатывать перезапись, если вы ничего не делаете для доступа к своему статическому контенту. Но не забудьте исключить для .ht* в вашем nginx conf: не хотите случайно предоставлять эти конкретные статические файлы широкой публике.

Я недавно переехал из Apache, чтобы Nginx. Хотя я не претендую на звание эксперта, я бы рекомендовал отказаться от Apache и использовать nginx с участием PHP-FPMвместо обратного прокси. Использование Nginx без Apache даст вам небольшой прирост производительности для нестатического контента и большой прирост производительности для статического контента. Поскольку Nginx не использует .htaccess файлов, это означает, что вам нужно будет настроить Nginx для обработки всех ваших перенаправлений и т. д. Сначала это может показаться немного сложным, но как только я узнал, как настраивать Nginx, я обнаружил, что это намного проще и проще, чем использование файлов .htaccess. Существуют инструменты, которые автоматически конвертируют правила .htaccess в правила Nginx, но я бы рекомендовал научиться делать это самостоятельно. Я обнаружил, что инструменты не конвертируются достаточно точно и использовали слишком много if заявления. Видеть: Если это зло.