Чего не хватает Nginx у Apache?

11

Говорят, что Nginx гораздо более ресурсоэффективен и проще в настройке, чем Apache. Друг сказал мне, что «он не может делать некоторые вещи, которые может делать Apache, но мне все равно эти вещи не нужны».

Тем не менее, мне любопытно: что может сделать Apache, чего не может сделать Nginx? Мне не нужен исчерпывающий список, просто общее представление о сценариях, где Apache будет лучшим выбором.

Натан Лонг
источник

Ответы:

9

Я думаю, что самые большие куски, которые все еще отсутствуют в Nginx - это полная поддержка WebDAV. Практически каждый другой аспект покрывается ядром или сторонним модулем.

Nginx не поддерживает такие вещи, как mod_php, поэтому я не уверен, что вы можете сказать, что в Nginx отсутствуют эти части. Это больше похоже на то, что Nginx довольно убедительно говорит вам, что использовать это глупо.

Мартин Фьордвальд
источник
+1 Хотя я не согласен с тем, что любое возможное использование mod_php и подобных ему вещей «глупо», я согласен с остальным.
Крис С
Это комментарий php-ненавистника или есть что-то действительно плохое в mod_php? Ссылка на сайт? Я спрашиваю, потому что почти все, что у меня есть, использует mod_php .. и, пожалуйста, мне все равно, что вы думаете лучше, я просто хотел бы знать, что не так с mod_php
Safado
3
mod_php не имеет ничего общего с самим PHP. Это связано с тем, как PHP взаимодействует с Apache. Проблема в том, что когда вы встраиваете PHP в Apache, то процесс, который обрабатывает PHP, и процесс, который обрабатывает файл изображения размером 2 КБ, - это один и тот же процесс. Если конечный клиент работает медленно, то ваш очень дорогой процесс может обслуживать небольшое изображение в течение 2 секунд, то есть времени, которое он не может потратить на PHP.
Мартин Фьордвальд
+1 «Это больше похоже на то, что Nginx довольно убедительно говорит вам, что использовать это глупо».
4

В Apache доступно большое количество модулей, которые допускают некоторые сценарии развертывания, которые невозможны в Nginx.

Один из примеров - mod_dav_svnхостинг Subversion по HTTP. Это доступно только для Apache. Другими примечательными примерами являются такие вещи, как mod_perlили mod_php. В то время как большинство традиционных установок также могут быть выполнены через FCGI (или WSGI, или пассажир), наличие действующего интерпретатора может быть полезным, если вам необходимо, например, реализовать пользовательские схемы аутентификации внутри веб-сервера (как это делается для хостинга git или svn с Redmine / ChiliProject).

В общем, ваш друг прав: большинство распространенных сценариев развертывания также могут быть решены с помощью nginx, но Apache по-прежнему более гибок, если вам приходится создавать более «специальные» вещи.

Хольгер Джаст
источник
3

Короткая версия этой истории состоит в том, что в Apache есть множество плагинов и сообщество, созданное вокруг него. Nginx, сравнительно недавно, был сравнительно недолгим, поэтому у него еще нет базы кода сообщества.

Когда люди спрашивают меня, в чем разница, Nginx - это нож для стейка, он подходит для самых разных целей и отлично справляется с некоторыми задачами. Apache - это швейцарский армейский нож, он обладает множеством различных функций и делает их все достаточно хорошо.

Крис С
источник
Я думаю, что вы, возможно, немного устарели в том, что может сделать Nginx, в некоторых областях он гораздо более универсален, чем Apache. Если не считать прокси HTTP / 1.1 и WebDAV, я не могу вспомнить многих вещей, которые ему не хватает.
Мартин Фьордвальд,
@MartinFjordvald Существует довольно много функций, которые Nginx намеренно решил не выполнять, вы не можете сказать, что они «отсутствуют», но вы не можете утверждать, что Nginx может делать все, что может Apache. Это компромисс, и я аплодирую Nginx за сделанный ими выбор.
Крис С
Ну, так как мой оригинальный комментарий прокси HTTP / 1.1 теперь поддерживается, поэтому мы переходим к поддержке webdav и svn. Это если мы не рассматриваем такие проблемы, как динамически связанные модули, и это правда, что nginx решил пока не делать этого.
Мартин Фьордвальд,
1

Множество модулей и огромная установленная база, для запуска. Но это не совсем то, на что обращает внимание Apache , это то, что делает Apache : он работает намного лучше для обслуживания динамического контента, такого как PHP, Python, Perl, Java и т. Д.

Конечно, вы можете сделать это и с Nginx (но это немного хамски IMHO), но решения работают на Apache намного более проверенно и зрело, чем на NginX, что, в свою очередь, намного лучше, чем Apache, для обслуживания высоких нагрузок и превосходного качества. переписать / обратный прокси.

Для каждой работы подходящий инструмент!

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