¿Varnish con nginx es mejor que solo usar nginx? [cerrado]


22

Veo mucho hablar sobre el uso de nginx con Varnish y no entiendo por qué. ¿No es nginx suficiente?

Nginx tiene SSI, tiene caché proxy inverso, es liviano, tiene SSL, puede funcionar con cgi, fpm, etc.

Varnish tiene las mismas cosas, pero no ssl y no tiene soporte cgi.


"Mejor" es realmente subjetivo. Depende de sus casos de uso ...
voretaq7

77
A veces una pregunta simple hace el trabajo mejor que las complejas. Estoy muy preocupado por acciones como esa de las personas que cerraron esta pregunta asumiendo que no era buena para el "formato original de preguntas y respuestas". Estoy buscando este tema y estaba muy interesado en ver el resultado de este debate.
Roger

barniz tiene una potente configuración vcl, purga, caché de proxy inverso, ESI nginx puede funcionar con FCGI, caché de proxy inverso, ssi, sin purga (tal vez haya un módulo) en cuanto al rendimiento, son casi iguales para archivos estáticos, almacenamiento en caché ... si usted tiene alguna pregunta que pueda ayudar
Bogdan Cosmin

Respuestas:


14

He encontrado barniz ~ 5% más rápido para archivos estáticos pequeños que nginx: el barniz frente a apache o el barniz frente a un servidor de aplicaciones web sería una gran ganancia; pero frente a nginx, el beneficio es bastante insignificante (especialmente teniendo en cuenta los gastos generales y la complejidad adicional tomada en cuenta)


¿Puede proporcionar algunos resultados de prueba para apoyar esto? ¿Qué pasa si ya estoy usando nginx + opcache? ¿Hay algún beneficio de usar barniz entonces?
Serio

23

Primero, para aclarar: Nginx es un servidor web, con todas las características y la complejidad que conlleva. También tiene capacidad de almacenamiento en caché, pero ese no es su objetivo principal de diseño.

Varnish no es un servidor web. No puede cumplir ese papel (de todos modos, no sin un VCL verdaderamente malvado). Su función es almacenar en caché el contenido proporcionado por otro servidor. Si es necesario, puede alterar la solicitud o la respuesta.

Si nginx puede manejar su tráfico, entonces es suficiente. Si nginx no puede mantenerse al día, entonces una forma de aumentar su capacidad es colocando un caché frente a él y haciendo que el caché maneje tantas solicitudes como sea posible.

Como ejemplo, utilizamos Apache para ejecutar una serie de sitios web PHP relativamente complejos desde un grupo de servidores web. Cuando comenzamos a experimentar problemas de capacidad, colocamos un par de servidores Varnish frente al clúster de Apache. Los hosts Varnish ahora manejan el 85% de todas las solicitudes entrantes sin molestar al backend de Apache.


Entonces, ¿Varnish almacena en caché el contenido dinámico generado por PHP? ¿O solo las otras cosas?
Alix Axel

El barniz almacena en caché todo lo que le diga al caché. Puede almacenar en caché solo la salida de PHP, solo los archivos estáticos, ambos o ninguno. Es una herramienta muy poderosa.
Insyte

Estaba preguntando sobre tu ejemplo específico. Me desconcierta cómo es posible almacenar en caché contenido dinámico sin estropear la aplicación dinámica (sesiones PHP para principiantes). El almacenamiento en caché de contenido estático me parece un poco redundante.
Alix Axel

3
Depende del contenido dinámico. Digamos, por ejemplo, que la página es una publicación de blog con comentarios. Puede ser extremadamente costoso generar el hilo de comentarios, pero es perfectamente aceptable almacenarlo en caché durante 5 minutos. Por otro lado, el almacenamiento en caché del contenido dinámico devuelto por una aplicación de correo web sería claramente problemático. Incluso puede crear un caso mixto: guarde en caché la salida completa de una aplicación de comercio electrónico, pero dígale a barniz que vuelva a llamar al backend para llenar el indicador del carrito de compras.
Insyte
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.