O que falta ao Nginx que o Apache possui?

11

Diz-se que o Nginx é muito mais eficiente em termos de recursos e mais fácil de configurar do que o Apache. Um amigo me disse que "ele não pode fazer algumas coisas que o Apache pode fazer, mas eu não preciso disso de qualquer maneira".

Ainda assim, estou curioso: que tipos de coisas o Apache pode fazer que o Nginx não pode? Não preciso de uma lista exaustiva, apenas uma ideia geral de cenários em que o Apache seria uma escolha melhor.

Nathan Long
fonte

Respostas:

9

Acho que as maiores peças ainda ausentes do Nginx são o suporte completo ao WebDAV. Praticamente todos os outros aspectos são cobertos pelo núcleo ou por um módulo de terceiros.

O Nginx não suporta coisas como mod_php por design, então não tenho certeza se você pode dizer que o Nginx está faltando essas partes. É mais como se o Nginx estivesse dizendo com muita força que usar isso é estúpido.

Martin Fjordvald
fonte
+1 Enquanto discordo que todo uso possível de mod_php e coisas do tipo são "estúpidas", concordo com o resto.
31711 Chris
Este é um comentário do php-hater ou há algo realmente inerentemente ruim sobre o mod_php? Ligação? Eu pergunto porque quase tudo o que tenho usos mod_php .. e por favor, não me importa o que você acha que é melhor, eu gostaria apenas de saber o que há de errado com mod_php
Safado
3
O mod_php não tem nada a ver com o próprio PHP. Tem a ver com a forma como o PHP interage com o Apache. O problema é que, quando você incorpora o PHP no Apache, o processo que gerencia o PHP e o processo que gerencia um arquivo de imagem de 2kb é exatamente o mesmo processo. Se o cliente final estiver lento, seu processo muito caro poderá exibir uma imagem pequena por 2 segundos, que é o tempo que ele não pode gastar em PHP.
Martin Fjordvald
+1 "É mais como se o Nginx estivesse dizendo com muita força que usar isso é estúpido."
4

O Apache possui uma grande quantidade de módulos disponíveis, que permitem alguns cenários de implantação que não são possíveis com o Nginx.

Um exemplo é mod_dav_svnpara hospedar o Subversion via HTTP. Está disponível apenas para Apache. Outros exemplos notáveis ​​são coisas como mod_perlou mod_php. Enquanto a maioria das configurações tradicionais também pode ser feita via FCGI (ou WSGI ou passageiro), ter um intérprete real em processo pode ser benéfico se você precisar, por exemplo, implementar esquemas de autenticação personalizados dentro do servidor da web (como é feito para hospedagem git ou svn com Redmine / ChiliProject).

Geralmente, seu amigo está certo: os cenários de implantação mais comuns também podem ser resolvidos com o nginx, mas o Apache ainda é mais flexível se você precisar criar mais coisas "especiais".

Holger Just
fonte
3

A versão curta da história é que o Apache possui muitos plugins e comunidades criados em torno dele. Nginx, existe há pouco tempo comparativamente e, portanto, ainda não possui a base de códigos da comunidade.

Quando as pessoas me perguntam qual é a diferença, o Nginx é uma faca de bife, é bom para uma variedade de usos e faz algumas coisas extremamente bem. O Apache é um canivete suíço, possui vários recursos diferentes e faz todos razoavelmente bem.

Chris S
fonte
Eu acho que você pode estar um pouco desatualizado com o que o Nginx pode fazer, em algumas áreas é muito mais versátil que o Apache. Com falta de proxy HTTP / 1.1 e WebDAV, não consigo pensar em muitas coisas que estão faltando.
Martin Fjordvald 12/04
@MartinFjordvald Existem algumas funções que o Nginx optou propositadamente por não executar, você não pode dizer que elas estão "ausentes", mas não pode afirmar que o Nginx pode fazer tudo o que o Apache também pode. É uma troca e aplaudo o Nginx pelas escolhas que fizeram.
Chris S
Bem, desde o meu comentário original, o proxy HTTP / 1.1 agora é suportado, portanto, não temos suporte para hospedagem de webdav e svn. Ou seja, se não considerarmos problemas como módulos vinculados dinamicamente, o que é verdade que o nginx decidiu não fazer até agora.
Martin Fjordvald 18/01/12
1

Muitos módulos e uma base instalada gigantesca, para começar. Mas não é exatamente o que o Apache tem que você deveria observar, é o que o Apache faz : funciona muito melhor para servir conteúdo dinâmico como PHP, Python, Perl, Java, etc.

É claro que você também pode fazer isso com o Nginx (mas é um IMHO um pouco hackiano), mas as soluções são muito mais comprovadas e maduras em execução no Apache do que no NginX, que, por sua vez, são muito melhores do que o Apache em servir altas cargas e um excelente desempenho. reescritor / proxy reverso.

Para cada trabalho, a ferramenta certa!

coredump
fonte
Talvez isso tenha acontecido antes de 2008, quando implantei o nginx em um servidor da Web de produção, mas não parece agora. Gostaria muito de ver por que você acredita que o modelo do Apache de incluir os intérpretes no servidor da Web é melhor.
Michael Hampton