{"id":5751,"date":"2024-10-30T11:47:49","date_gmt":"2024-10-30T10:47:49","guid":{"rendered":"https:\/\/www.lrob.fr\/?p=5751"},"modified":"2024-10-30T11:47:49","modified_gmt":"2024-10-30T10:47:49","slug":"plesk-et-nginx-reverse-proxy-impact-sur-les-performances","status":"publish","type":"post","link":"https:\/\/portail.lrob.fr\/en\/blog\/plesk-et-nginx-reverse-proxy-impact-sur-les-performances\/","title":{"rendered":"Plesk et NGINX Reverse Proxy : Impact sur les performances"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Par d\u00e9faut, Plesk utilise NGINX en Reverse proxy d&rsquo;Apache. Mais cette configuration par d\u00e9faut est-elle optimale ? Quel est l&rsquo;impact sur les performances\u202f? Pour r\u00e9pondre \u00e0 ces questions en tant qu&rsquo;<a href=\"https:\/\/portail.lrob.fr\/en\/\">h\u00e9bergeur web<\/a> utilisant Plesk, j\u2019ai effectu\u00e9 des tests de charge sur un VPS Hetzner (8 c\u0153urs AMD Epyc) pour mesurer l&rsquo;impact de l&rsquo;activation d\u2019NGINX comme reverse proxy sur les performances globales.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Sommaire<\/h2><nav><ul><li class=\"\"><a href=\"\/en\/#contexte-et-configuration\">Contexte et Configuration<\/a><ul><li class=\"\"><a href=\"\/en\/#configurations-nginx\">Configurations NGINX<\/a><\/li><\/ul><\/li><li class=\"\"><a href=\"\/en\/#resultats-des-tests-de-performance\">R\u00e9sultats des Tests de Performance<\/a><\/li><li class=\"\"><a href=\"\/en\/#analyse-impact-de-nginx-sur-les-performances\">Analyse : Impact de NGINX sur les Performances<\/a><\/li><li class=\"\"><a href=\"\/en\/#quelques-avantages-d-nginx-avec-plesk\">Autres consid\u00e9rations concernant NGINX et Plesk<\/a><\/li><li class=\"\"><a href=\"\/en\/#conclusion\">Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"contexte-et-configuration\">Contexte et Configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le cadre de ce benchmark, j\u2019ai compar\u00e9 les performances du serveur en activant et en d\u00e9sactivant NGINX. J&rsquo;ai \u00e9galement test\u00e9 l&rsquo;activation du cache de NGINX (et cela change tout !).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les tests de charge ont \u00e9t\u00e9 r\u00e9alis\u00e9s avec ApacheBench (ab) en envoyant localement 5000 requ\u00eates avec une concurrence de 200 requ\u00eates simultan\u00e9es. Ce pour que le test dure suffisamment longtemps et que cela limite la marge d&rsquo;erreur. Il est \u00e0 noter que le site de test est tr\u00e8s l\u00e9ger et performant par rapport \u00e0 la moyenne, avec seulement 50 \u00e0 80ms de TTFB (temps de r\u00e9ponse).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici les configurations principales\u202f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Serveur<\/strong> : VPS Hetzner 8 c\u0153urs (AMD Epyc)<\/li>\n\n\n\n<li><strong>Serveur Web<\/strong> : Plesk 18.0.65 avec Apache + NGINX comme reverse proxy<\/li>\n\n\n\n<li><strong>Site de test<\/strong> : LRob.fr un site WordPress FSE, th\u00e8me Twenty Twenty-Four avec cache Breeze<\/li>\n\n\n\n<li><strong>Commandes de test<\/strong> : <code>ab -n 5000 -c 200 https:\/\/portail.lrob.fr\/<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configurations-nginx\">Configurations NGINX<\/h3>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-3a88641f wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a1c8ff8e0e38&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a1c8ff8e0e38\" class=\"wp-block-image aligncenter size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"974\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/Plesk-nginx-default-settings.png\" alt=\"\" class=\"wp-image-5752\" srcset=\"https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/Plesk-nginx-default-settings.png 871w, https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/Plesk-nginx-default-settings-268x300.png 268w, https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/Plesk-nginx-default-settings-768x859.png 768w, https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/Plesk-nginx-default-settings-600x671.png 600w\" sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Configuration NGINX par d\u00e9faut (Plesk 18.0.65)<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a1c8ff8e125a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a1c8ff8e125a\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/plesk-nginx-custom-settings-698x1024.png\" alt=\"\" class=\"wp-image-5753\" srcset=\"https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/plesk-nginx-custom-settings-698x1024.png 698w, https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/plesk-nginx-custom-settings-205x300.png 205w, https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/plesk-nginx-custom-settings-768x1126.png 768w, https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/plesk-nginx-custom-settings-600x880.png 600w, https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/plesk-nginx-custom-settings.png 791w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Configuration NGINX personnalis\u00e9e<\/figcaption><\/figure>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"resultats-des-tests-de-performance\">R\u00e9sultats des Tests de Performance<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">Nginx<\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Temps total pour 5000 requ\u00eates<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Requ\u00eates par seconde<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>Temps moyen par requ\u00eate<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\"><strong>D\u00e9bit de transfert<\/strong><\/th><th class=\"has-text-align-center\" data-align=\"center\">Performances<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Activ\u00e9<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">9.400 s<\/td><td class=\"has-text-align-center\" data-align=\"center\">531.94<\/td><td class=\"has-text-align-center\" data-align=\"center\">375.984 ms<\/td><td class=\"has-text-align-center\" data-align=\"center\">16 572.67 Ko\/s<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>100%<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>D\u00e9sactiv\u00e9<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">7.045 s<\/td><td class=\"has-text-align-center\" data-align=\"center\">709.74<\/td><td class=\"has-text-align-center\" data-align=\"center\">281.794 ms<\/td><td class=\"has-text-align-center\" data-align=\"center\">22\u202f130.80 Ko\/s<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>133.42%<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Activ\u00e9 (cache statique)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">5.734 s<\/td><td class=\"has-text-align-center\" data-align=\"center\">884.26<\/td><td class=\"has-text-align-center\" data-align=\"center\">226.177 ms<\/td><td class=\"has-text-align-center\" data-align=\"center\">27567.59<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>166.24%<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-8c4bbfbd-3c37-4bda-a4b4-e7acadb6a377\" href=\"https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/nginx-on-off-cache-test.txt\">R\u00e9sultats bruts : NGINX on off cache test<\/a><a href=\"https:\/\/portail.lrob.fr\/wp-content\/uploads\/2024\/10\/nginx-on-off-cache-test.txt\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-8c4bbfbd-3c37-4bda-a4b4-e7acadb6a377\">T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"analyse-impact-de-nginx-sur-les-performances\">Analyse : Impact de NGINX sur les Performances<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avec la configuration par d\u00e9faut (NGINX activ\u00e9), le serveur fonctionne correctement, mais un bottleneck du CPU a \u00e9t\u00e9 constat\u00e9. L&rsquo;utilisation CPU globale (tous les c\u0153urs) ne d\u00e9passe pas les 85 % lors du test de charge, avec un process NGINX qui est bloqu\u00e9 \u00e9galement autour de 85%.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sans NGINX, Apache g\u00e8re directement les requ\u00eates. Les r\u00e9sultats montrent une am\u00e9lioration de +33% des performances.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais la surprise est lorsque le cache NGINX est activ\u00e9 et g\u00e8re directement les fichiers statiques. On observe +66% de gains de performances ! Et ce n&rsquo;est pas tout : on observ\u00e9 \u00e9galement une r\u00e9duction d&rsquo;utilisation des c\u0153urs CPU \u00e0 30%, laissant une importante marge de CPU disponible pour d&rsquo;autres usages essentiels comme PHP-FPM ou MariaDB\/MySQL. NGINX est cependant limit\u00e9 \u00e0 99% d&rsquo;utilisation CPU (donc un c\u0153ur) : Peut-\u00eatre est-il possible d&rsquo;\u00e9tendre son utilisation \u00e0 plusieurs c\u0153urs CPU et de d\u00e9cupler encore les r\u00e9sultats. Lors du test, j&rsquo;avais encore 5 \u00e0 6 c\u0153urs CPU disponibles, de quoi potentiellement multiplier ce r\u00e9sultat par 2 ou 3. Cela m\u00e9rite d&rsquo;\u00eatre \u00e9tudi\u00e9 ult\u00e9rieurement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quelques-avantages-d-nginx-avec-plesk\">Autres consid\u00e9rations concernant NGINX et Plesk<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Plesk favorise l&rsquo;utilisation d&rsquo;NGINX avec plusieurs avantages qui peuvent justifier son activation\u202f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>G\u00e9n\u00e9ration de certificats am\u00e9lior\u00e9e<\/strong> : Plesk permet par exemple de g\u00e9n\u00e9rer un certificat pour le webmail seulement, uniquement lorsque NGINX est en place.<\/li>\n\n\n\n<li><strong>S\u00e9curit\u00e9<\/strong> : Des fonctions comme OCSP Stapling sont dispo en 1 clic, uniquement avec NGINX<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">D&rsquo;autres avantages m&rsquo;\u00e9chappent peut-\u00eatre. L&rsquo;inconv\u00e9nient est bien-s\u00fbr que vous avez alors deux applicatifs web qui augmentent l\u00e9g\u00e8rement la complexit\u00e9 de l&rsquo;installation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019utilisation de NGINX comme reverse proxy sous Plesk peut \u00eatre extr\u00eamement puissante pour des sites statiques, ou lorsque combin\u00e9 \u00e0 un bon syst\u00e8me de cache (<a href=\"https:\/\/portail.lrob.fr\/en\/blog\/internet\/wordpress\/comparatif-des-8-plugins-de-cache-gratuits-et-populaires-pour-wordpress-quel-est-le-plus-performant\/\">voir comparatif des cache pour WordPress<\/a>). Mais selon mon test, il est indispensable de modifier les r\u00e9glages NGINX pour obtenir un gain de performances plut\u00f4t qu&rsquo;une r\u00e9duction en comparaison \u00e0 Apache seul.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par ailleurs, les r\u00e9sultats peuvent varier fortement en fonction de vos applicatifs finaux (vos sites) et de leur cache. Utilisez si besoin ma m\u00e9thodologie du test pour faire vos propres mesures et comparer. A ce sujet, vos retours m&rsquo;int\u00e9ressent : partagez vos r\u00e9sultats en commentaires !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quoi qu&rsquo;il en soit, pour b\u00e9n\u00e9ficier d&rsquo;une grande puissance comparable \u00e0 un serveur d\u00e9di\u00e9, mais \u00e0 prix mutualis\u00e9, pensez aux offres LRob pour <a href=\"https:\/\/portail.lrob.fr\/en\/hebergement-web\/\">h\u00e9berger votre site web<\/a> ou <a href=\"https:\/\/portail.lrob.fr\/en\/hebergement-web\/agence-web\/\">h\u00e9berger votre agence web ou vos nombreux sites.<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Par d\u00e9faut, Plesk utilise NGINX en Reverse proxy d&rsquo;Apache. Mais cette configuration par d\u00e9faut est-elle optimale ? Quel est l&rsquo;impact sur les performances\u202f? Pour r\u00e9pondre \u00e0 ces questions en tant qu&rsquo;h\u00e9bergeur web utilisant Plesk, j\u2019ai effectu\u00e9 des tests de charge sur un VPS Hetzner (8 c\u0153urs AMD Epyc) pour mesurer l&rsquo;impact de l&rsquo;activation d\u2019NGINX comme [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5756,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,46],"tags":[],"class_list":["post-5751","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-sysadmin"],"_links":{"self":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/posts\/5751","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/comments?post=5751"}],"version-history":[{"count":0,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/posts\/5751\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/media\/5756"}],"wp:attachment":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/media?parent=5751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/categories?post=5751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/tags?post=5751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}