nginx

nginx υψηλής απόδοσης HTTP server και reverse proxy

Τι είναι ο nginx;

Ο nginx (διαβάζεται engine-x) είναι ένας δωρεάν, ανοικτού κώδικα, υψηλής απόδοσης HTTP server και reverse proxy, καθώς και IMAP/POP3 proxy server. Το nginx project ξεκίνησε από τον Igor Sysoev το 2002 εστιάζοντας έντονα στον υψηλό συγχρονισμό, στον υψηλής απόδοσης προσανατολισμό και ελαχιστοποίηση της χρήσης μνήμης. Το 2004 έγινε διαθέσιμη η πρώτη έκδοση για το κοινό. Ο nginx πλέον κρατά ένα μερίδιο της τάξης πάνω από 15% της αγοράς web servers.

Γιατί nginx?

Ο nginx είναι ένας από τους λίγους servers προγραμματισμένους ώστε να αντιμετωπίζουν το C10K πρόβλημα. Αυτό σημαίνει να μπορούν να διαχειριστούν πάνω από 10.000 ταυτόχρονες συνδέσεις με μικρή κατανάλωση μνήμης (~2.5 MB ανά 10k αδρανών HTTP keep-alive συνδέσεις). Αντίθετα με τους παραδοσιακούς servers servers, ο nginx δεν στηρίζεται σε threads για να χειρίζεται τα requests. Αντίθετα χρησιμοποιεί πολύ πιο επεκτάστιμη event-driven (ασύγχρονη) αρχιτεκτονική. Αυτή η αρχιτεκτονική χρησιμοποιεί λίγη, αλλά το πιο σημαντικό, προβλεπόμενη ποσότητα μνήμης κάτω από φόρτο.

Ακόμα κι αν κάποιος ή κάποια δεν περιμένει να χειριστεί χιλιάδες ταυτόχρονων αιτημάτων, μπορεί ακόμα να επωφεληθεί από την υψηλή απόδοση και μικρή κατανάλωση μνήμης του nginx. Ο nginx επεκτείνεται σε όλες τις κατευθύνσεις: από το πιο μικρό VPS μέχρι και σε επίπεδο clusters από servers.

Ο nginx εξυπηρετεί μια σειρά από μεγάλης αναγνωρισιμότητας sites, όπως: YouTube, Netflix, Hulu, Pinterest, CloudFlare, Airbnb, WordPress.com, GitHub, SoundCloud, Zynga, Eventbrite, Zappos, Media Temple, Heroku, RightScale, Engine Yard και NetDNA.

Άλλα χαρακτηριστικά του nginx:

  • Handling of static files, index files, and auto-indexing
  • Reverse proxy with caching
  • Load balancing with in-band health checks
  • Fault tolerance
  • TLS/SSL with SNI and OCSP stapling support, via OpenSSL.
  • FastCGI, SCGI, uWSGI support with caching
  • Name- and IP address-based virtual servers
  • IPv6-compatible
  • SPDY protocol support
  • WebSockets and HTTP/1.1 Upgrade (101 Switching Protocols)
  • FLV and MP4 streaming
  • Web page access authentication
  • gzip compression and decompression
  • URL rewriting
  • Custom logging with on-the-fly gzip compression
  • Response rate and concurrent requests limiting
  • Bandwidth throttling
  • Server Side Includes
  • IP address-based geolocation
  • User tracking
  • WebDAV
  • XSLT data processing
  • Embedded Perl scripting

Links: