Le vernis avec nginx est-il meilleur que d'utiliser simplement nginx? [fermé]


22

Je vois beaucoup parler de l'utilisation de nginx avec Varnish et je ne comprends pas pourquoi. Nginx ne suffit-il pas?

Nginx a SSI, a un cache de proxy inverse, est léger, a SSL, peut fonctionner avec cgi, fpm, etc.

Le vernis a les mêmes choses, mais pas de ssl et pas de support cgi.


"Mieux" est vraiment subjectif. Cela dépend de vos cas d'utilisation ...
voretaq7

7
Parfois, une question simple fait mieux que les questions complexes. Je suis très préoccupé par des actions comme celles des personnes qui ont clos cette question en supposant que ce n'était pas bon pour le "format Q&R original". Je cherche sur ce sujet et j'étais très intéressé de voir le résultat de ce débat.
Roger

le vernis a une puissante configuration vcl, purge, cache proxy inverse, ESI nginx peut fonctionner avec FCGI, cache proxy inverse, ssi, pas de purge (il y a peut-être un module) en termes de performances, ils sont presque les mêmes pour les fichiers statiques, la mise en cache ... si vous avez des questions, je peux vous aider
Bogdan Cosmin

Réponses:


14

J'ai trouvé le vernis ~ 5% plus rapide pour les petits fichiers statiques que nginx - un vernis devant apache, ou un vernis devant un serveur d'application web serait un gros gain; mais devant nginx, l'avantage est assez négligeable (surtout avec les frais généraux et la complexité supplémentaire pris en compte)


Pouvez-vous fournir des résultats de test à l'appui de cela? Et si j'utilise déjà nginx + opcache. Y a-t-il alors un avantage à utiliser du vernis?
Serious

23

Tout d'abord, pour clarifier: Nginx est un serveur Web, avec toutes les fonctionnalités et la complexité que cela implique. Il a également une capacité de mise en cache, mais ce n'est pas son objectif de conception principal.

Varnish n'est pas un serveur Web. Il ne peut pas remplir ce rôle (pas sans une VCL vraiment mauvaise, de toute façon). Son rôle est de mettre en cache le contenu fourni par un autre serveur. Si nécessaire, il peut modifier la demande ou la réponse.

Si nginx peut gérer votre trafic, cela suffit. Si nginx n'est pas en mesure de suivre, alors une façon d'augmenter sa capacité est de placer un cache devant lui et d'avoir le cache gérer autant de demandes que possible.

Par exemple, nous utilisons Apache pour exécuter un certain nombre de sites Web PHP relativement complexes à partir d'un cluster de serveurs Web. Lorsque nous avons commencé à rencontrer des problèmes de capacité, nous avons placé une paire de serveurs Varnish devant le cluster Apache. Les hôtes Varnish gèrent désormais 85% de toutes les demandes entrantes sans déranger le backend Apache.


Ainsi, Varnish met en cache le contenu dynamique généré par PHP? Ou juste les autres trucs?
Alix Axel

Le vernis met en cache tout ce que vous lui demandez de mettre en cache. Il peut mettre en cache uniquement la sortie PHP, uniquement les fichiers statiques, les deux ou aucun. C'est un outil très puissant.
Insyte

Je posais des questions sur votre exemple spécifique. Cela me déconcerte comment il est possible de mettre en cache du contenu dynamique sans gâcher l'application dynamique (sessions PHP pour commencer). La mise en cache de contenu statique me semble un peu redondante.
Alix Axel

3
Cela dépend du contenu dynamique. Disons, par exemple, que la page est un article de blog avec des commentaires. Il peut être extrêmement coûteux de générer le fil de commentaires mais parfaitement acceptable pour le mettre en cache pendant 5 minutes. D'un autre côté, la mise en cache du contenu dynamique renvoyé par une application de messagerie Web serait clairement problématique. Vous pouvez même créer un cas mixte: mettez en cache la sortie complète d'une application de commerce électronique, mais demandez au vernis de rappeler le backend pour remplir l'indicateur du panier.
Insyte
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.