Hace unos meses decidí cambiar el servidor web que se encarga de gestionar las conexiones de este humilde blog. La decisión no fue sencilla, en ella tuvieron participación distintos e importantes jugadores, la respuesta se encontraba principalmente entre: Nginx, lighttpd y cherokee. Finalmente me decidí por Nginx.
El trabajo de servidor web de forma histórica en esta bitácora fue realizado por Apache, un servidor muy fiel, con muchísimas opciones de configuración y que cuenta con mucha y precisa información en internet ante cualquier inconveniente que pueda presentarse. No obstante ya había leído mucho sobre Nginx y no pude resistirme a probarlo.
Nginx una pequeña introducción
Nginx es un servidor HTTP, creado por Igor Sysoev para uno de los sitios más populares de Rusia, liberado para licencia BSD. Este fantástico proyecto no solo funciona como un servidor HTTP, tambien puede ser configurado como proxy inverso, y un servidor proxy para IMAP/POP3/SMTP.
Nginx fue creado desde sus comienzos como un servidor web de alto rendimiento. Según varias investigaciones, la que se referencia en el sitio oficial del proyecto es la elaborada por la empresa NetCraft, Nginx es el cuarto servidor web con más de dos millones de dominios. Este estudio fue elaborado en el 2008, en varios lugares pude ver que se ubica a Nginx en el segundo lugar, algo que nos indica como su utilización fue creciendo año tras año.
A titulo informativo, Nginx es el servidor web elegido por la gente de WordPress.com para servir millones de paginas al mes. Un pequeño dato que nos habla muy bien de este proyecto y su relación con uno de los CMS más populares de los últimos años.
Nginx rendimiento
Es muy difícil generalizar y dar por verdades absolutas en que puntos Nginx es superior o no a servidores como Apache, no obstante les puedo comentar que por diversas pruebas realizadas, cuando se trata de contenido estático, Nginx puede superar a Apache con uso de recursos bastante inferior.
La comparación que todos buscan es para saber si Nginx es superior a Apache, la respuesta no es sencilla, y es porque Apache puede ser configurado de muchas formas, por lo que hacer un benchmark sobre estos geniales servidores web puede terminar siendo algo muy injusto. En mi humilde opinión voy a remarcar algo, Nginx es fácil de configurar, muy fácil y el resultado es simplemente genial, al menos eso me ocurre con WordPress.
En conclusión Nginx tiene muchos puntos a su favor para inclinar la balanza a su favor, el servidor web con una configuración básica tiene un rendimiento casi optimo, algo que con Apache no ocurre de forma frecuente.
No obstante si les gustan las comparaciones, una que me gustó bastante fue la que realizó Joe Williams con un Dual 2.4GHz Xeon, 4GB de RAM y CentoOS 5.1 como sistema operativo. Los resultados muy interesantes muestran a Nginx como ganador, a continuación las gráficas:
Nginx y WordPress
Una de mis principales preocupaciones a la hora de instalar Nginx con WordPress eran las posibles incompatibilidades, grata fue mi sorpresa al darme cuenta que NO existen. WordPress corre perfectamente en este servidor sin prácticamente realizar modificaciones.
Una de las principales diferencias en la configuración entre Apache y Nginx es la forma de reescribir las direcciones, Nginx no utiliza htaccess, así que tengan precaución en ese aspecto. Si bien Nginx no utiliza htaccess la forma de reescribir direcciones es MUY similar, me animo a decir que inclusive es más sencilla. Así que no tengan miedo y hagan sus pruebas.
En mi caso decidí utilizar W3 Total Cache para realizar Cache de contenidos en WordPress, de esta forma logro gestionar y tratar en un gran porcentaje el contenido generado con WP como contenido estático, Nginx hace su trabajo con total comodidad, consumiendo muy poca memoria ram y sin transpirar 😛
Mi recomendación: instalen Nginx. Es un muy lindo servidor web, fácil de instalar y que tiene un rendimiento extraordinario. Si su entorno de trabajo es PHP + MySQL, no van a tener ningún tipo de problema o incompatibilidades, así que pueden avanzar sin miedo.
Lo mejor de Nginx es el ahorro en recursos, en mi caso estoy mostrando la misma cantidad de paginas por mes, prácticamente sin fallas, ni errores, y con un 30% menos de consumo de recursos. No puedo pedir mas 😀
Cualquier duda que tengan si están pensando migrar de Apache a Nginx con su WordPress, dejen sus comentarios.
hsufan
13 años ago
Estimado Pablo:
Muchas gracias por tu artículo. Quisiera saber si es posible instalarlo, al depender de un hosting externo. No lo ofrecen como producto en sus opciones, pero ¿sería válido hacer la solicitud?
De ante mano, muchas gracias.
dmouse
13 años ago
Cuando utilice ngix por primera ves hace 5 años era muy complica usarlo la documentación la mayoría en ruso pero ahora hay muy buena doc.
Has probado algo con apc o memcache para el blog?
Saludos
Gonzalo
13 años ago
Me impresiona como de a poco le quito terreno a Apache. Y no me cabe duda que lo seguirá haciendo.
@hsufan me parece que sin VPS no es posible.
Tavo
13 años ago
Tengo unos cuantos años de experiencia en programación, web, performance, linux. Llegue a la conclusión que para sitios dinámicos todavia no es conveniente reemplazar apache. Si uso ni nignx como servidor CDN para contenido estático imágenes, js, css. Nginx es un poco inmaduro en cuanto a módulos todavia.
Lo mejor de mi RSS del 13 al 19 de febrero | Linux Hispano
13 años ago
[…] Ayuda WordPressLos 3 mejores juegos de plataformas para Ubuntu – Ubuntizando el planetaNginx con WordPress – KabytesGrasa web – El blog de Diego CallejaMeneameBitacorasFacebookTwitter Acerca de F. Javier Carazo […]
David Gómez (@emsLinux)
13 años ago
Yo migré mi blog de Apache a NGINX sobre Amazon Cloud Services hace aproximadamente unos seis meses y ha sido la mejor decisión de mi vida. Cuando Apache consumía casi todos los recursos de mi servidor al momento de subir las visitas al blog, NGINX llegó permitiéndome incluso alojar mas de un sitio en el mismo servidor.
Es lo mejor que hay, lo recomiendo con los ojos cerrados.
Oscar Silva
13 años ago
Buen artículo Pablo, hace un tiempo habia leido un articulo sobre alternativas a Apache y me llamó la atención Nginx. Ahora mismo estoy poniendome manos a la obra para reestructurar todo mi servidor a Nginx y probar que tal, gracias a tu preciso review del tema.
Backups en proceso 😉
Gracias.
Siguiendo la telaraña 7 y 8/2012 | Thalskarth's Maëlstrom
13 años ago
[…] Nginx con WordPress. […]
jhsilva
13 años ago
Tengo un VPS en Rackspace y con Nginx ha volado. Decidì luego de algunos meses viendo de Nginx probarlo en el local y me encontré con la grata sorpresa que volaban los sitios y dije veremos que tal en un ambiente de producción y realmente ha mejorado considerablemente los tiempos de respuesta de mis sitios.
Saludos cordiales
Gestionar las direcciones desde PHP | Kabytes
13 años ago
[…] es utilizar las redirecciones que nos proveen los distintos servidores web, tanto Apache como Nginx nos brindan mecanismos sencillos a la hora de reescribir direcciones. No obstante desde la […]
Rodrigo Zaupa | Gestionar las direcciones desde PHP
13 años ago
[…] es utilizar las redirecciones que nos proveen los distintos servidores web, tanto Apache como Nginx nos brindan mecanismos sencillos a la hora de reescribir direcciones. No obstante desde la […]
Esteban
13 años ago
@emsLinux, contame como implementaste NGINX sobre Amazon Cloud Services
Agradezco tu respuesta.
Ramiro
13 años ago
Hola, Muy buen articulo. De hecho fué este y otros articulos que leí por la web que me terminaron de convencer. Tengo un VPS en Dreamhost y lo configuré con Nginx + PHP+FPM y APC. Y la verdad que corro Drupal y WordPress lo mas bien, ni hablar de páginas estáticas. El TTFB (time to first byte) de los sitios que hacen testeos a las webs se redució considerablemente y mi consumo de RAM practicamente bajó a un tercio.
Utilizo también W3 Total Cache y CloudFlare para mejorar el rendimiento y bajar la carga al server.
En el caso de Drupal el modulo para cachear que utilizo es Boost.
El único problema que tengo por el momento es que cuando me logueo como admin y quiero crear una entrada me salta un error de js, al parecer tiene algo que ver con que el navegador interpreta el js como PHP o algo asi. Me tira el siguiente Error:
Uncaught SyntaxError: Unexpected end of input load-scripts.php:65
Uncaught SyntaxError: Unexpected end of input wp-tinymce.php:2
Uncaught ReferenceError: tinyMCE is not defined post-new.php:659
Uncaught ReferenceError: switchEditors is not defined post-new.php:260
No se si será una config de Nginx o de PHP, no soy tan experto como para saber el motivo. Alguien sabe por que podria pasar esto ?
Gracias y saludos
jorge
13 años ago
Muy interesante. Déjeme decirle algo que corrobora el desempeño de nginx.
Mi conexión hogareña a internet suele volverse muy lenta, e incluso en esos momentos, cada vez que entro ocasionalmente a esta página, resulta ser que se carga más rápido que cualquier otra, por más básicas que sean.
Por cierto ¿cuál es la alternativa al . htaccess? existe algún tutorial en español? saludos
Nginx Plus | Kabytes
11 años ago
[…] aparición comercial de este proyecto, todo lo contrario, mi pronostico es que voy a poder usando Nginx con WordPress por un largo periodo de tiempo. Y en el peor de los casos siempre tendremos alternativas libres de […]
Estadísticas en tiempo real para Nginx | Kabytes
11 años ago
[…] Ya lo comenté en otras oportunidades, Nginx es mi servidor Web preferido, brinda un excelente rendimiento con una configuración de lo más sencilla. Sin ir más lejos este sitio se encuentra alojado en un servidor que utiliza WordPress y Nginx. […]