Je suis un fan de Nginx et j’ai commencé à l’utiliser quand Apache m’a fait défaut. Nous avions à ce moment plusieurs centaines de requêtes concurrentes et les crashs s’accumulaient. Redémarrer Apache n’était pas une solution viable à long terme.
C’est suite à cela que je suis tombé sur Nginx.
J’ai lu de nombreux articles sur Nginx avant de me lancer. Est-ce réellement plus rapide qu’Apache? De nombreux sites web se sont lancés dans les benchmarks de ces deux serveurs web. À chaque fois, le résultat est le même : les gens dans les commentaires se donnent de tout cœur pour dénoncer la configuration est déficiente ou inégale d’un serveur à l’autre. Il y a toujours une configuration à gauche ou à droite qui aurait pu, selon les commentateurs, changer la donne.
Au final, on s’en fout un peu, non ? Je n’ai jamais vu un benchmark qui faisait l’unanimité. Il y aura toujours quelqu’un pour dire que ce n’était pas objectif.
Mon but est d’avoir, par défaut, un serveur web rapide que je n’aurai pas à redémarrer ou ajuster au moindre peak de trafic. Mais si on veut un début de réponse, on n’a qu’à regarder quels sites à haut trafic utilisent Nginx pour être convaincu.
Quand j’ai fait le saut vers Nginx, mes problèmes se sont réglés d’eux-mêmes. Le load sur le serveur est redevenu stable et même avec une croissance, les problèmes du passé ne sont pas revenus. Nginx a fait le travail!
Personne ne nie l’efficacité de Nginx quand on parle de servir des fichiers statiques. Après tout, il a été conçu pour répondre au problème C10K. De plus, Nginx est event-driven et asynchrone (Apache est process-based) ce qui permet une utilisation moins intense des ressources du système et de ne pas avoir à attendre que la requête soit exécutée pour en accueillir une autre. Avec Nginx, la configuration est (re)chargée sur demande contrairement à Apache qui interprète les fichiers .htaccess à chaque appel. Cela rend Nginx plus efficace, mais il ne faut pas oublier de le faire!
Par contre, pour les fichiers dynamiques en PHP, mes recherches m’ont porté à croire que Nginx n’était pas aussi efficace qu’Apache. Je ne citerai pas mes trouvailles pour les raisons énoncées plus haut. Cela dit, si les fichiers sont directement passés de Nginx à PHP-FPM, Apache serait plus performant. Le gain de Nginx par rapport à Apache viendrait de l’utilisation d’un optimisateur PHP comme OpCache qui conserve les fichiers pré-compilés en mémoire. Heureusement, depuis PHP 5.5, OpCache vient par défaut et il ne reste qu’à l’activer. Avec cet ajout, Nginx reprendrait le terrain perdu et la différence serait négligeable.
Si vous souhaitez délaisser votre serveur web actuel et utiliser Nginx, lisez mon introduction à Nginx pour WordPress. Même si vous n’utilisez pas WordPress, c’est rempli de contenu pertinent!
Rappelez-vous que peu importe votre configuration, elle peut être améliorée si vous en ressentez le besoin. Et même si vous n’en ressentez pas le besoin, il y a moyen de faire mieux. Le serveur web est un critère parmi tant d’autres qui influence la vitesse d’un site web. Par contre, la configuration du serveur web est grandement responsable des coûts liés à l’hébergement de votre site. Il est donc important d’y voir dans le cas d’un hébergement de type VPS ou dédié. Si vous avez un hébergement partagé (shared hosting), vous devrez vous contenter de la configuration faite par votre hébergeur web.
Dans mon cas, ma conclusion a été la suivante: je ne sais pas si Nginx est « plus rapide » qu’Apache. Toutefois, la gestion des ressources par Nginx a fait en sorte que l’efficacité a pris le dessus sur la vitesse. Pour la vitesse, j’y reviendrai dans un prochain article.
Vous avez rencontré des problèmes qui vous ont poussé à changer votre configuration ou votre serveur web ?
Très intéressant ton article! Merci.
Merci pour l’article. Même si je n’ai aucune connaissance technique à ce niveau, il es bon de savoir ce qui s’offre comme option…