Améliorer les performances de nginx en SSL
- Unix
Dans le précédent article, je vous présentai un article qui recommandait de ne pas utiliser nginx avec le protocole HTTPS. Finalement Matt a trouvé la raison qui expliquait pourquoi les performances de nginx étaient si mauvaises…
Du coup, les performances de nginx ne sont pas si mauvaises même pour gérer le protocole HTTPS, une fois que l'on modifie une petite ligne de configuration…
Pourquoi les performances de nginx étaient mauvaises
Quand on fait une comparaison, il est primordial de se placer dans des cas de tests identiques, or vous vous en doutez, ce n'était pas le cas dans les résultats obtenus par Matt. En effet, pour traiter les requêtes en SSL, un navigateur a besoin d'une phase de cryptage et cette configuration du cryptage peut être couteuse en traitement en fonction des algorithmes que l'on y applique.
Les autres serveurs utilisaient du cryptage à base de et nginx utilisait le cryptage DHE qui est un cryptage le plus sécuritaire mais également extrêmement gourmand en ressources.
Et l'erreur des mesures des benchmarks vient de là, les séquences de cryptage entre les différents serveurs n'étaient pas la même. Le serveur nginx utilisait un algorithme de plus que les autres et qui est particulièrement gourmand en resources, ce qui explique pourquoi les performances en SSL étaient si mauvaises.
Comment résoudre ce problème de performances ?
Il suffit d'éditer la configuration du serveur nginx et de s'assurer que le cryptage utilisé pour la sécurité est AES256-SHA, qui est le second algorithme le plus évolué en terme de sécurité mais qui a besoin de moins de ressources.
Il suffit donc d'avoir la ligne suivante dans la configuration nginx pour configurer SSL :
ssl_ciphers ALL:!kEDH:!aNULL:!ADH:!eNULL:!MEDIUM:!LOW:!EXP:RC4 RSA: HIGH;
Je ne vais pas détailler dans le détail cette ligne, mais la partie importante est !kEDH, qui indique à nginx qu'il désactive le cryptage DHE et ainsi garantir de bonnes perfs à votre serveur !
La conclusion de l'article de Matt vous permettra de savoir si votre serveur nginx est configuré pour gérer correctement les connections en SSL…
Source : Matt blags