¿Qué le falta a Nginx que tiene Apache?

11

Se dice que Nginx es mucho más eficiente en recursos y más fácil de configurar que Apache. Un amigo me dijo que "no puede hacer algunas cosas que puede hacer Apache, pero no las necesito de todos modos".

Aún así, tengo curiosidad: ¿qué tipo de cosas puede hacer Apache que Nginx no puede hacer? No necesito una lista exhaustiva, solo una idea general de escenarios en los que Apache sería una mejor opción.

Nathan Long
fuente

Respuestas:

9

Creo que las piezas más grandes que aún faltan en Nginx es el soporte completo de WebDAV. Casi todos los demás aspectos están cubiertos por el núcleo o un módulo de terceros.

Nginx no admite cosas como mod_php por diseño, por lo que no estoy seguro de que pueda decir que a Nginx le faltan estas partes. Es más como si Nginx te estuviera diciendo con bastante fuerza que usar esto es estúpido.

Martin Fjordvald
fuente
+1 Aunque no estoy de acuerdo con que cada posible uso de mod_php y cosas por el estilo sean "estúpidas", sí estoy de acuerdo con el resto.
Chris S
¿Es este un comentario de php-hater o hay algo realmente inherentemente malo sobre mod_php? ¿Enlace? Pregunto porque casi todo lo que tengo usa mod_php ... y, por favor, no me importa lo que creas que es mejor, solo me gustaría saber qué le pasa a mod_php
Safado
3
mod_php no tiene nada que ver con PHP en sí. Tiene que ver con cómo PHP interactúa con Apache. El problema es que cuando incrusta PHP en Apache, el proceso que maneja PHP y el proceso que maneja un archivo de imagen de 2kb es exactamente el mismo proceso. Si el cliente final es lento, su proceso muy costoso puede servir una imagen pequeña durante 2 segundos, que es tiempo que no puede pasar en PHP.
Martin Fjordvald
+1 "Es más como si Nginx te dijera con bastante fuerza que usar esto es estúpido".
4

Apache tiene una gran cantidad de módulos disponibles que permiten algunos escenarios de implementación que no son posibles con Nginx.

Un ejemplo es mod_dav_svnpara alojar Subversion a través de HTTP. Es solamente disponible para Apache. Otros ejemplos notables son cosas como mod_perlo mod_php. Si bien la mayoría de las configuraciones tradicionales también se pueden hacer a través de FCGI (o WSGI, o pasajero), tener un intérprete real en proceso puede ser beneficioso si necesita, por ejemplo, implementar esquemas de autenticación personalizados dentro del servidor web (como se hace para el alojamiento git o svn con Proyecto Redmine / Chili).

En general, su amigo tiene razón: los escenarios de implementación más comunes también se pueden resolver con nginx, pero Apache aún es más flexible si tiene que construir algunas cosas más "especiales".

Holger Just
fuente
3

La versión corta de la historia es que Apache tiene muchos complementos y una comunidad construida alrededor. Nginx solo ha existido por un corto tiempo comparativamente, por lo que aún no tiene la base de código de la comunidad.

Cuando la gente me pregunta cuál es la diferencia, Nginx es un cuchillo para carne, es bueno para una variedad de usos y hace algunas cosas extremadamente bien. Apache es una navaja suiza, tiene un montón de características diferentes y las cumple razonablemente bien.

Chris S
fuente
Creo que puede estar un poco desactualizado sobre lo que Nginx puede hacer, en algunas áreas es mucho más versátil que Apache. A falta de proxy HTTP / 1.1 y WebDAV, no se me ocurren muchas cosas que faltan.
Martin Fjordvald
@MartinFjordvald Hay bastantes funciones que Nginx eligió deliberadamente no hacer, no puede decir que están "perdidas", pero tampoco puede afirmar que Nginx puede hacer todo lo que Apache puede hacer. Es una compensación y aplaudo a Nginx por las elecciones que han hecho.
Chris S
Bueno, ya que mi comentario original HTTP / 1.1 proxying ahora es compatible, por lo que no podemos admitir el alojamiento webdav y svn. Eso es si no consideramos problemas como los módulos vinculados dinámicamente, lo cual es cierto que nginx ha decidido no hacer hasta ahora.
Martin Fjordvald
1

Muchos módulos y una base instalada ginourmous, para empezar. Pero no es exactamente lo que tiene Apache lo que debería mirar, es lo que hace Apache : funciona mucho mejor para servir contenido dinámico como PHP, Python, Perl, Java, etc.

Por supuesto, también puede hacerlo con Nginx (pero es un poco halagador en mi humilde opinión), pero las soluciones son mucho más probadas y maduras en Apache que en NginX, que a su vez es mucho mejor que Apache en servir cargas altas y un excelente reescritor / proxy inverso.

¡Para cada trabajo, la herramienta adecuada!

volcado de memoria
fuente
Tal vez esto era cierto antes de 2008 cuando implementé nginx por primera vez en un servidor web de producción, pero ahora no lo parece. Me encantaría ver una expansión de por qué crees que el modelo de Apache de incluir a los intérpretes en el servidor web es mejor.
Michael Hampton