Ребят, вот мне недавно рассказывали мол на дворе 2к17 и чистый nginx надо использовать для сайта по дефолту, независимо от того какой там будет контент, мол nginx научился работать с динамикой лучше чем апач и апач+nginx это прошлый век. Так ли это? Имеет ли смысл юзать апач хоть для чего-нибудь?
Смотря зачем.
Если для организации шаред-хостинга, то Apache незаменим: в нем можно без перегрузки сервера использовать конфиги.
Если для отдельного проекта, то он будет только отжирать лишнюю память. А для статики все-равно понадобится nginx.
процессу nginx можно послать сигнал -s reload для перезагрузки конфига с нулевым даунтаймом.
Получив сигнал, главный процесс проверяет правильность синтаксиса нового конфигурационного файла и пытается применить конфигурацию, содержащуюся в нём. Если это ему удаётся, главный процесс запускает новые рабочие процессы и отправляет сообщения старым рабочим процессам с требованием завершиться. В противном случае, главный процесс откатывает изменения и продолжает работать со старой конфигурацией. Старые рабочие процессы, получив команду завершиться, прекращают принимать новые запросы и продолжают обслуживать текущие запросы до тех пор, пока все такие запросы не будут обслужены. После этого старые рабочие процессы завершаются.
Дело не только в конфигах. На шаред-хостингах норма 200-500-1000 пользователей на сервере и тут для обработки php действительно лучше апач, который будет висеть в памяти парой десятков процессов. А при организации через php-fpm каждому юзеру надо свой пул делать, которые будут создавать сотни процессов php в памяти... Ну и помимо php до сих пор встречаются старые CGI скрипты, python, RoR... Всё это удобнее в рамках хостинга сделать через апач, а впереди поставить nginx просто для статики и gzip-сжатия.
zooks, я не спорю, что на vds или дедике nginx намного лучше. Апач сейчас стоит использовать только на шареде. Я всего лишь из своего опыта дополнил ваш ответ, что далеко не только из-за конфигов апач преобладает на хостинге.
Nginx не обрабатывает динамическое содержимое. Для обработки PHP или других динамических запросов нужно использовать внешний интерпретатор и ждать пока он вернет результат обработки.
qwqeqwe2017: nginx сам не обрабатывает, зато прекрасно передаёт запросы дальше и возвращает ответы. Например, запросы к /api передаёт дальше в Node.js, а для файлов *.php – в PHP-FPM, как верно заметил Boris Korobkov . Причем Node может крутиться на одном сервере, а PHP-FPM на другом, в сумме развивая большую производительность.