De quoi Nginx manque-t-il à Apache?

11

Nginx serait beaucoup plus efficace en termes de ressources et plus facile à configurer qu'Apache. Un ami m'a dit "qu'il ne peut pas faire certaines choses qu'Apache peut faire, mais je n'ai pas besoin de ces choses de toute façon."

Pourtant, je suis curieux: quel genre de choses Apache peut-il faire que Nginx ne peut pas? Je n'ai pas besoin d'une liste exhaustive, juste une idée générale des scénarios où Apache serait un meilleur choix.

Nathan Long
la source

Réponses:

9

Je pense que le plus gros morceau manquant à Nginx est le support complet de WebDAV. Presque tous les autres aspects sont couverts par le noyau ou un module tiers.

Nginx ne prend pas en charge des éléments tels que mod_php par conception, donc je ne suis pas sûr que vous puissiez dire que Nginx manque ces parties. C'est plus comme si Nginx vous disait avec force que son utilisation est stupide.

Martin Fjordvald
la source
+1 Bien que je ne sois pas d'accord pour dire que chaque utilisation possible de mod_php et de choses comme celle-ci est "stupide", je suis d'accord avec le reste.
Chris S
Est-ce un commentaire haineux de php ou y a-t-il vraiment quelque chose de vraiment mauvais à propos de mod_php? Lien? Je demande parce que presque tout ce que j'ai utilise mod_php .. et s'il vous plaît, peu m'importe ce que vous pensez être mieux, je voudrais juste savoir ce qui ne va pas avec mod_php
Safado
3
mod_php n'a rien à voir avec PHP lui-même. Cela a à voir avec la façon dont PHP interagit avec Apache. Le problème est que lorsque vous intégrez PHP dans Apache, le processus qui gère PHP et le processus qui gère un fichier image de 2 Ko sont exactement le même processus. Si le client final est lent, votre processus très coûteux peut servir une petite image pendant 2 secondes, ce qui est du temps qu'il ne peut pas passer en PHP.
Martin Fjordvald
+1 "C'est plus comme si Nginx vous disait avec force que son utilisation est stupide."
4

Apache a une grande quantité de modules disponibles qui permettent certains scénarios de déploiement qui ne sont pas possibles avec Nginx.

Un exemple est mod_dav_svnpour l'hébergement de Subversion sur HTTP. Il est uniquement disponible pour Apache. D'autres exemples notables sont des choses comme mod_perlou mod_php. Alors que la plupart des configurations traditionnelles peuvent également être effectuées via FCGI (ou WSGI, ou passager), avoir un interprète en cours peut être bénéfique si vous devez par exemple implémenter des schémas d'authentification personnalisés à l'intérieur du serveur Web (comme c'est le cas pour l'hébergement git ou svn avec Redmine / ChiliProject).

Généralement, votre ami a raison: les scénarios de déploiement les plus courants peuvent également être résolus avec nginx, mais Apache est toujours plus flexible si vous devez créer des choses plus "spéciales".

Holger Just
la source
3

La version courte de l'histoire est qu'Apache a beaucoup de plugins et de communauté construits autour d'elle. Nginx, n'existe que depuis peu de temps comparativement, et il n'a donc pas encore la base de code communautaire.

Quand les gens me demandent quelle est la différence, Nginx est un couteau à steak, il est bon pour une variété d'utilisations et fait très bien certaines choses. Apache est un couteau suisse, il a une tonne de fonctionnalités différentes et les fait toutes assez bien.

Chris S
la source
Je pense que vous pourriez être légèrement dépassé sur ce que Nginx peut faire, dans certains domaines, il est beaucoup plus polyvalent qu'Apache. À court de proxy HTTP / 1.1 et WebDAV, je ne peux pas penser à beaucoup de choses qui manquent.
Martin Fjordvald
@MartinFjordvald Il y a pas mal de fonctions que Nginx a délibérément choisi de ne pas faire, vous ne pouvez pas dire qu'elles sont "manquantes", mais vous ne pouvez pas prétendre que Nginx peut faire tout ce qu'Apache peut faire. C'est un compromis et j'applaudis Nginx pour les choix qu'ils ont faits.
Chris S
Eh bien, comme mon commentaire d'origine, le proxy HTTP / 1.1 est maintenant pris en charge, nous en sommes donc à l'hébergement webdav et svn non pris en charge. C'est-à-dire si nous ne considérons pas des problèmes tels que les modules liés dynamiquement, ce qui est vrai que nginx a décidé de ne pas le faire jusqu'à présent.
Martin Fjordvald
1

Beaucoup de modules et une base installée ginourmous, pour commencer. Mais ce n'est pas exactement ce que Apache a que vous devriez regarder, est ce que Apache fait : cela fonctionne beaucoup mieux pour servir du contenu dynamique comme PHP, Python, Perl, Java, etc.

Bien sûr, vous pouvez aussi le faire avec Nginx (mais c'est un peu hack IMHO), mais les solutions sont beaucoup plus éprouvées et matures en cours d'exécution sur Apache que sur NginX, qui à son tour est bien meilleur qu'Apache pour servir des charges élevées et une superbe réécriture / proxy inverse.

Pour chaque travail, le bon outil!

coredump
la source
C'était peut-être vrai avant 2008, lorsque j'ai déployé nginx pour la première fois sur un serveur Web de production, mais cela ne semble pas le cas maintenant. J'aimerais voir une explication des raisons pour lesquelles vous pensez que le modèle d'Apache consistant à inclure les interprètes dans le serveur Web est meilleur.
Michael Hampton