Nginx vs Apache: cuál elegir para tu servidor
Dedicados & VPS
25

Los dos grandes

Apache y Nginx son los dos servidores web más usados del planeta. Ambos sirven páginas HTTP/HTTPS, ambos soportan PHP, ambos funcionan en Linux y Windows. Pero su diseño interno es muy diferente y eso afecta cómo se comportan bajo carga, cómo se configuran y qué casos les favorecen.

Apache: el veterano flexible

Apache HTTP Server nació en 1995 y durante años fue el servidor web número uno del mundo. Su característica más conocida es la flexibilidad: permite configurar casi todo a través de archivos .htaccess que cada usuario puede modificar sin tocar la configuración global. Esto lo convirtió en el favorito para hosting compartido — cada cliente puede personalizar rewrites, redirecciones, cabeceras y autenticación sin depender del administrador del servidor.

Modelo de procesos

Apache usa uno de estos modelos (MPM o Multi-Processing Module):

  • prefork — crea un proceso separado por cada petición. Sencillo y muy compatible, pero consume más memoria.
  • worker — combina procesos con hilos. Mejor rendimiento con menos memoria.
  • event — el más moderno, maneja conexiones persistentes de forma más eficiente. Es el recomendado hoy.

Ventajas de Apache

  • Soporte nativo de .htaccess por directorio.
  • Integración profunda con módulos PHP (mod_php).
  • Miles de módulos para todo tipo de necesidades.
  • Documentación extensa y comunidad enorme.
  • Default en la mayoría de paneles de hosting (cPanel).

Desventajas

  • Mayor consumo de RAM bajo alto tráfico.
  • El uso de .htaccess tiene un costo — se lee en cada petición.
  • Menos eficiente sirviendo archivos estáticos a miles de visitantes simultáneos.

Nginx: el nuevo contendiente

Nginx (pronunciado "engine-x") surgió en 2004 diseñado específicamente para resolver el "problema C10K" — servir 10,000+ conexiones simultáneas sin ahogarse. Su arquitectura asíncrona y orientada a eventos le permite manejar muchísima concurrencia con muy poca RAM.

Modelo de procesos

Nginx usa un "worker process" por cada núcleo de CPU. Cada worker maneja miles de conexiones simultáneas de forma asíncrona — no bloquea, simplemente atiende eventos conforme ocurren. Esto lo hace extremadamente eficiente en consumo de recursos.

Ventajas de Nginx

  • Uso de memoria estable aun con decenas de miles de conexiones.
  • Excelente rendimiento sirviendo archivos estáticos.
  • Proxy inverso y balanceador de carga nativo.
  • Configuración más ordenada — un solo archivo legible por servidor.
  • Ideal frente a aplicaciones modernas (Node.js, Python, Go, PHP-FPM).

Desventajas

  • No soporta .htaccess. Todas las reglas van en la config global, lo que complica el hosting compartido.
  • Cualquier cambio en configuración requiere un recargo del servicio.
  • No ejecuta PHP directamente — depende de PHP-FPM u otro intérprete separado.
  • Menos módulos listos para instalar que Apache.

Diferencias prácticas

Estático vs dinámico

Para servir archivos estáticos (HTML, CSS, JS, imágenes), Nginx gana con diferencia. Puede entregar miles de peticiones por segundo con bajísimo consumo. Apache también lo hace bien, pero con más costo por petición.

Para contenido dinámico (PHP generando HTML), ambos son similares — el cuello de botella está en PHP, no en el servidor web. Con PHP-FPM configurado bien, Nginx y Apache rinden parecido.

Reglas por directorio

Apache permite que el usuario de cada sitio ajuste su propia configuración con .htaccess. Nginx no lo soporta — todo se configura globalmente. Esta es la diferencia más importante para hosting compartido: en Nginx puro, los clientes no pueden modificar cosas como redirecciones sin contactar al admin.

Modelo de conexión

Apache tradicional asigna un proceso/hilo por conexión. Si tienes 1000 visitantes simultáneos, necesitas 1000 procesos — mucha RAM. Nginx maneja miles de conexiones en un solo proceso mediante eventos — RAM constante.

La solución combinada: Nginx + Apache

Muchas instalaciones profesionales usan ambos: Nginx al frente (puerto 80/443), Apache detrás. Nginx sirve archivos estáticos directo y reenvía las peticiones PHP a Apache por un puerto interno. Apache ejecuta PHP y devuelve el resultado a Nginx. Así aprovechas lo mejor de cada uno:

  • Velocidad de Nginx para estáticos y conexiones.
  • Flexibilidad de .htaccess de Apache para los clientes.

Este modo es común en cPanel moderno, que trae Nginx como "reverse proxy cache" frente a Apache.

Cuál usar según el caso

Usa Apache si...

  • Estás en hosting compartido y tus clientes necesitan .htaccess.
  • Usas cPanel y quieres compatibilidad total con su ecosistema.
  • Tu aplicación depende de mod_php u otros módulos específicos de Apache.
  • Quieres la menor curva de aprendizaje para empezar.

Usa Nginx si...

  • Tienes un VPS dedicado a una sola aplicación.
  • Esperas tráfico alto con muchos visitantes simultáneos.
  • Sirves principalmente contenido estático (sitios estáticos, APIs ligeras, CDN).
  • Necesitas proxy inverso o balanceo de carga.
  • Trabajas con Node.js, Python o Go — donde Nginx actúa como front-end para backends HTTP.

Usa ambos si...

  • Administras un servidor con múltiples sitios PHP variados.
  • Quieres el rendimiento de Nginx sin perder la flexibilidad de .htaccess.
  • Tu panel (cPanel, Plesk) ya soporta esta configuración nativamente.

Una nota sobre benchmarks

Verás muchos artículos comparando velocidad con benchmarks sintéticos. Esos números varían según configuración, versión, hardware y carga real. En la práctica, la elección entre Apache y Nginx rara vez se decide por "cuál es 5% más rápido" — se decide por qué configuración te permite hacer tu trabajo sin fricción, qué se integra mejor con tus herramientas, y qué conoces bien tu equipo. Un Apache bien configurado suele ser más rápido que un Nginx mal configurado, y viceversa.