Présentation de nginx

Posté par (page perso) . Modéré par patrick_g.
21
17
juin
2010
Internet
Nginx est un reverse proxy et serveur web, ainsi qu'un proxy mail (IMAP et POP3), sous licence BSD. Igor Sysoev a commencé à le développer en 2002 pour un site russe à fort trafic, et depuis la popularité de nginx n'a cessé de croître. Selon netcraft, 6,5% des sites web dans le monde seraient servis par nginx.

Nginx est réputé pour ses performances et sa faible consommation mémoire. Cela vient de son architecture : au lieu de dédier un processus ou un thread pour traiter chaque requête, il utilise un modèle événementiel. Cela lui permet notamment de tenir un grand nombre de connexions simultanées sans voir sa consommation mémoire s'envoler. Des sites connus comme Wordpress, github et SourceForge l'ont choisi pour cette raison.

Nginx est également développé selon une approche modulaire : il est composé d'un cœur réduit et d'un grand nombre de modules que l'on peut choisir d'inclure à la compilation. Comme il est facile de développer un module, il en existe de nombreux et qui couvrent une large palette de fonctionnalités, des plus essentielles (SSL, fastcgi, gzip, rewrite, log) aux plus exotiques (servir des fichiers GIF vides, afficher des pages d'index aléatoires).

Si vous souhaitez télécharger nginx, 3 versions vous seront proposées : la branche 0.8 offre les dernières avancées, la branche 0.7 est la branche stable, et la branche 0.6 (legacy) est encore maintenue. La dernière version, sortie le 15 juin, est la 0.8.41. Vous pourrez l'installer sur Linux, BSD, Solaris, OSX ou encore Windows.
  • # serveurs web alternatifs

    Posté par (page perso) . Évalué à  2 .

    Bonjour,

    Dans les serveurs web alternatifs à Apache on compte nginx, cherokee, lighttpd. Tous annoncent une meilleure montée en charge qu'Apache, des performances accrues, une meilleure utilisation de la mémoire, etc.

    Pour ma part j'ai testé lighttpd don j'ai apprécié la simplicité de configuration. Mais sur le plan des performances, comment se situe-t-il par rapport à nginx ?
    • [^] # Re: serveurs web alternatifs

      Posté par . Évalué à  7 .

      Bonjour;

      Autant que je me souvienne, lighttpd est légèrement meilleur en terme de performances. Mais comparé à la différence entre nginx/lighttpd d'une part et apache de l'autre, la différence est négligeable.

      De plus nginx bénéficie d'une syntaxe proche de celle d'apache, ce qui facilite le nombre de personnes pouvant utiliser nginx très rapidement, contrairement à lighttpd, qui nécessite une expertise particulière, dédiée.

      Par ailleurs, à un moment, lighttpd avait malheureusement des memory leaks. Je pense que ça a du être corrigé depuis, mais il est possible que ça ne facilite pas son adoption.

      C'est probablement un peu de ces deux raisons qui ont fait que lightty n'a jamais vraiment décollé alors que nginx a eu une ascension impressionnante.

      Quant à cherokee, je ne connais pas. Mais bon, comme dans le domaine des navigateurs, c'est une bonne chose qu'il y ait un grand choix de solutions crédibles et performantes. Apache serait le Firefox : l'espère de figure de proue, le plus complet (mais pas forcément le plus rapide du coup), tandis que plein de challengers plein de qualités commencent à se faire une place au soleil. Et c'est plutôt positif.


      Enfin pour finir, je trouve dommage que nginx soit avant tout présenté comme un reverse proxy. C'est vrai que c'est une grande qualité, et que c'est la majorité des cas dans lesquels je l'utilise. Mais de manière générale, ce n'est pas forcément vrai. Beaucoup de gens l'utilisent comme serveur web simple (ie sans cgi par exemple), ou en tant que serveur statique derrière un apache qui fait le reste (pour servir des images, des vidéos, des css par exemple, tandis que le apache gère le php, le perl, le python, le ruby, whatever).
      • [^] # Re: serveurs web alternatifs

        Posté par (page perso) . Évalué à  3 .

        C'est marrant, la ressemblance de la conf de nginx avec celle d'Apache est vu comme un plus. Pour moi, la conf d'Apache est un echec industriel, plutôt XML, mais pas complètement, plutôt modulaire, mais pas complètement.
        Je suis passé à lighttpd pour avoir des fichiers de confs lisibles, et en prime, j'ai gagné les performances du serveur monothread. La possibilité d'utiliser Lua pour les cas bizarres est aussi appréciable. Par contre, il est clair que le projet est en phase tranquille, avec des mises à jour de sécurité et pas beaucoup de buzz.
        Sur ce point, Nginx est bien plus tonique. Aprés, le format de fichier, c'est pas du sendmail, hein, c'est lisible et bien documenté, et on arrive à quelque chose sans aspirine.

        Le vrai bonus pour ces serveurs (nginx/lighty/cherokee), c'est qu'ils ont sorti le PHP, et que l'on peut utiliser php-fpm (spawn-fcgi était juste une béquille en attendant que fpm arrive). Avec php-fpm, on peut border bien comme il faut son site PHP, en isolant les utilisateurs ou même les restrictions timeout/mémoire par pattern d'url. Le tout, sans jamais attaquer le swap et en tenant des charges bien honorables.
        • [^] # Re: serveurs web alternatifs

          Posté par . Évalué à  2 .

          Tu racontes n'importe quoi.

          Après cette accroche certes racoleuse, je m'explique :-)

          1 - "la conf d'Apache est un échec industriel parce que c'est pas XML"
          Apache existe depuis 1995 (source: http://mirror.ibcp.fr/pub/apache/httpd/CHANGES_1.3).
          Le plus ancien working draft de la spec XML (que j'ai trouvé) date de 1996 : http://www.w3.org/TR/WD-xml-961114

          La conf d'Apache n'a pas bougé depuis ses débuts, et c'est clairement une de ses forces.

          2 - "Le vrai bonus pour ces serveurs (nginx/lighty/cherokee), c'est qu'ils ont sorti le PHP"
          Depuis quand ce n'est pas possible avec Apache ?
          Pour la petite histoire, PHP fonctionnait jadis en CGI, et c'était un vrai bonus pour Apache qu'il soit disponible en tant que module, et qu'on puisse le configurer directement dans la conf d'Apache.

          Enfin, Apache évolue, puisqu'il propose de même dans sa version trunk d'un MPM événementiel (marqué expérimental pour la 2.2.x). Le modèle "prefork" n'est plus le seul depuis longtemps.

          Des serveurs comme nginx prennent à mon sens toute leur utilité en frontal d'un Apache, comme ça a été dit plus tôt. Ou si on en a envie, parce que ça sert aussi à ça :-)
          • [^] # Re: serveurs web alternatifs

            Posté par (page perso) . Évalué à  5 .

            "Le plus ancien working draft de la spec XML (que j'ai trouvé) date de 1996"

            XML est une simplification/normalisation de SGML qui existait bien avant pour les documents structurés, et là on reviens dans les limbes de l'histoire informatique... les années 70 si j'en crois cet historique http://xml.coverpages.org/sgmlhist0.html

            Après, la lecture d'une conf d'Apache... ça semble une question de goûts. Perso, j'accroche pas.
        • [^] # Re: serveurs web alternatifs

          Posté par (page perso) . Évalué à  5 .

          C'est quoi, php-fpm ?
        • [^] # Re: serveurs web alternatifs

          Posté par . Évalué à  3 .

          C'est marrant, la ressemblance de la conf de nginx avec celle d'Apache est vu comme un plus. Pour moi, la conf d'Apache est un echec industriel, plutôt XML, mais pas complètement, plutôt modulaire, mais pas complètement. Justement.

          La configuration de nginx n'est pas de type XML, mais est plus proche d'une sytaxe de code C.

          Mais les balises mises à part, les fichiers de confs sont très proches et il est vraiment très facile d'utiliser nginx sans lire la doc avant (Bon il faut éviter, bien évidemment, mais ce n'est pas impossible. La preuve, je l'ai fait).
        • [^] # Re: serveurs web alternatifs

          Posté par (page perso) . Évalué à  3 .

          Exactement, la config c'est principalement ce qui m'a fait passer à lighttpd.

          DLFP >> PCInpact > Numerama >> LinuxFr.org

  • # nginx rend beau et fort

    Posté par . Évalué à  5 .

    Igor Sysoev a commencé à le développer en 2002 pour un site russe à fort trafic C'est un euphémisme en fait.

    Il a développé ça pour rambler, le 8e[1] site russe en terme de visite (Si on enlève google, il est dans le top 5 des sites en langue russe).

    Et sinon nginx, c'est bon, mangézan.

    Au passage nginx est très simple d'utilisation pour quelqu'un qui connaît apache. Contrairement à lighttpd, par exemple, pas besoin de réapprendre une autre syntaxe. Il suffit d'utiliser la syntaxe apache dans un style plus proche du C (moins de balises, plus de blocs).

    [1] http://www.alexa.com/topsites/countries/RU
  • # Très bon si la mémoire est étroite

    Posté par . Évalué à  4 .

    A recommander surtout pour les serveurs virtuels qui n'ont pas la mémoire pour un grand nombre de threads Apache !

    En plus, il y a quelques modules dont il n'y a pas d'équivalent chez lighttpd (HTTP Push) .

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.