Έκδοση nginx 1.18.0

Μετά από ένα χρόνο ανάπτυξης παρουσιάζονται νέος σταθερός κλάδος διακομιστή HTTP υψηλής απόδοσης και διακομιστή μεσολάβησης πολλαπλών πρωτοκόλλων nginx 1.18.0, που απορρόφησε τις αλλαγές που συσσωρεύτηκαν εντός του κύριου κλάδου 1.17.χ. Στο μέλλον, όλες οι αλλαγές στον σταθερό κλάδο 1.18 θα σχετίζονται με την εξάλειψη σοβαρών σφαλμάτων και τρωτών σημείων. Σύντομα θα δημιουργηθεί ο κύριος κλάδος του nginx 1.19, εντός του οποίου θα συνεχιστεί η ανάπτυξη νέων χαρακτηριστικών. Για απλούς χρήστες που δεν έχουν το καθήκον να διασφαλίσουν τη συμβατότητα με ενότητες τρίτων, συνιστάται χρησιμοποιήστε τον κύριο κλάδο, βάσει του οποίου σχηματίζονται εκδόσεις του εμπορικού προϊόντος Nginx Plus κάθε τρεις μήνες.

Σύμφωνα με Έκθεση Απριλίου Το Netcraft nginx χρησιμοποιείται στο 19.56% όλων των ενεργών τοποθεσιών (πριν από ένα χρόνο 20.73%, πριν από δύο χρόνια 21.02%), που αντιστοιχεί στη δεύτερη θέση σε δημοτικότητα σε αυτήν την κατηγορία (το μερίδιο του Apache αντιστοιχεί στο 27.64%, Google - 10.03%, Microsoft IIS - 4.77%) . Ταυτόχρονα, λαμβάνοντας υπόψη όλους τους ιστότοπους, η nginx διατηρεί την ηγετική της θέση και καταλαμβάνει το 36.91% της αγοράς (πριν από ένα χρόνο 27.52%), ενώ το μερίδιο της Apache αντιστοιχεί σε 24.73%, της Microsoft IIS - 12.85%, της Google - 3.42%.

Μεταξύ των εκατομμυρίων τοποθεσιών με τις περισσότερες επισκέψεις στον κόσμο, το μερίδιο του nginx είναι 25.54% (πριν από ένα χρόνο 26.22%, πριν από δύο χρόνια 23.76%). Επί του παρόντος, περίπου 459 εκατομμύρια ιστότοποι τρέχουν το Nginx (397 εκατομμύρια πριν από ένα χρόνο). Με Σύμφωνα με Το W3Techs nginx χρησιμοποιείται στο 31.9% των τοποθεσιών από το εκατομμύριο με τις περισσότερες επισκέψεις, τον Απρίλιο του περασμένου έτους αυτό το ποσοστό ήταν 41.8%, το προηγούμενο έτος - 38% (η πτώση εξηγείται από τη μετάβαση σε ξεχωριστή λογιστική του διακομιστή Cloudflare http). Το μερίδιο της Apache μειώθηκε κατά τη διάρκεια του έτους από 43.6% σε 38.9%, και το μερίδιο της Microsoft IIS από 8.6% σε 8.3%. Στη Ρωσία nginx χρησιμοποιούνται στο 78.9% των περιοχών με τις περισσότερες επισκέψεις (πριν από ένα χρόνο - 81%).

Οι πιο αξιοσημείωτες βελτιώσεις που προστέθηκαν κατά την ανάπτυξη του κλάδου 1.17.x upstream:

  • προστέθηκε οδηγία limit_req_dry_run, που ενεργοποιεί τη δοκιμαστική λειτουργία, στην οποία δεν εφαρμόζονται περιορισμοί στην ένταση της επεξεργασίας αιτημάτων (χωρίς όριο ρυθμού), αλλά συνεχίζει να λαμβάνει υπόψη τον αριθμό των αιτημάτων που υπερβαίνουν τα όρια στην κοινόχρηστη μνήμη.
  • προστέθηκε οδηγία limit_conn_dry_run, το οποίο αλλάζει τη λειτουργική μονάδα ngx_http_limit_conn_module σε δοκιμαστική λειτουργία, στην οποία ο αριθμός των συνδέσεων δεν είναι περιορισμένος, αλλά λαμβάνεται υπόψη.
  • Προστέθηκε οδηγία "author_delay", το οποίο σας επιτρέπει να προσθέσετε μια καθυστέρηση σε μη εξουσιοδοτημένα αιτήματα με κωδικό απόκρισης 401 για να μειώσετε την ένταση της εικασίας κωδικού πρόσβασης και να προστατεύσετε από επίθεση, χειρισμός της μέτρησης του χρόνου εκτέλεσης των λειτουργιών (επίθεση χρονισμού) κατά την πρόσβαση σε συστήματα στα οποία η πρόσβαση είναι περιορισμένη Κωδικός πρόσβασης, αποτέλεσμα υποερώτησης ή J.W.T. (JSON Web Token);
  • Προστέθηκε υποστήριξη για μεταβλητές στις οδηγίες "limit_rate" και "limit_rate_after", καθώς και στις οδηγίες "proxy_upload_rate" και "proxy_download_rate" της ενότητας ροής.
  • Στην οδηγία grpc_pass προστέθηκε υποστήριξη για τη χρήση μιας μεταβλητής σε μια παράμετρο που ορίζει μια διεύθυνση. Εάν η διεύθυνση έχει καθοριστεί ως όνομα τομέα, το όνομα αναζητείται μεταξύ των περιγραφόμενων ομάδων διακομιστών και, εάν δεν βρεθεί, προσδιορίζεται με χρήση ενός εργαλείου επίλυσης.
  • Προστέθηκαν νέες μεταβλητές $proxy_protocol_server_addr и $proxy_protocol_server_port, τα οποία περιέχουν τη διεύθυνση διακομιστή και τη θύρα που λαμβάνονται από την κεφαλίδα του πρωτοκόλλου PROXY.
  • Στην ενότητα ngx_stream_limit_conn_module προστέθηκε μεταβλητή $limit_conn_status, το οποίο αποθηκεύει το αποτέλεσμα του περιορισμού του αριθμού των συνδέσεων: PASSED, REJECTED ή REJECTED_DRY_RUN.
  • Στην ενότητα ngx_http_limit_req_module προστέθηκε μεταβλητή $limit_req_status, το οποίο αποθηκεύει το αποτέλεσμα του περιορισμού του ρυθμού άφιξης των αιτημάτων: ΕΠΙΒΕΒΗΘΗΚΕ, ΚΑΘΥΣΤΕΡΗΘΗΚΕ, ΑΠΟΡΡΙΦΘΗΚΕ, DELAYED_DRY_RUN ή REJECTED_DRY_RUN.
  • Από προεπιλογή, η μονάδα είναι συναρμολογημένη ngx_http_postpone_filter_module;
  • Προστέθηκε υποστήριξη για εναλλαγή μπλοκ με όνομα "location" χρησιμοποιώντας τη μέθοδο $r->internal_redirect() που παρέχεται από τον ενσωματωμένο διερμηνέα Perl. Αυτή η μέθοδος περιλαμβάνει πλέον την επεξεργασία URI με χαρακτήρες διαφυγής.
  • Όταν χρησιμοποιείτε την οδηγία "upstream" στο μπλοκ ρυθμίσεων "upstream".χασίσι» για να οργανώσετε την εξισορρόπηση φορτίου με δέσμευση πελάτη-διακομιστή, εάν καθορίσετε μια τιμή κενού κλειδιού, ενεργοποιείται τώρα η ομοιόμορφη λειτουργία εξισορρόπησης (round-robin).
  • Προστέθηκε υποστήριξη για κλήση ioctl(FIONREAD) εάν είναι διαθέσιμη για να αποφευχθεί η ανάγνωση από μια γρήγορη σύνδεση με την πάροδο του χρόνου.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο