Έκδοση nginx 1.20.0

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

Σύμφωνα με μια έκθεση Μαρτίου από το Netcraft, το nginx χρησιμοποιείται στο 20.15% όλων των ενεργών τοποθεσιών (πριν από 19.56%, πριν από δύο χρόνια 20.73%), που αντιστοιχεί στη δεύτερη θέση σε δημοτικότητα σε αυτήν την κατηγορία (το μερίδιο του Apache αντιστοιχεί στο 25.38% (πριν από ένα χρόνο 27.64%), Google - 10.09%, Cloudflare - 8.51%. Ταυτόχρονα, λαμβάνοντας υπόψη όλους τους ιστότοπους, η nginx διατηρεί την ηγετική της θέση και καταλαμβάνει το 35.34% της αγοράς (πριν από ένα χρόνο 36.91%, πριν από δύο χρόνια - 27.52%), ενώ το μερίδιο του Apache αντιστοιχεί σε 25.98%, OpenResty ( πλατφόρμα βασισμένη σε nginx και LuaJIT.) - 6.55%, Microsoft IIS - 5.96%.

Μεταξύ των εκατομμυρίων τοποθεσιών με τις περισσότερες επισκέψεις στον κόσμο, το μερίδιο του nginx είναι 25.55% (πριν από ένα χρόνο 25.54%, πριν από δύο χρόνια 26.22%). Επί του παρόντος, περίπου 419 εκατομμύρια ιστότοποι τρέχουν το Nginx (459 εκατομμύρια πριν από ένα χρόνο). Σύμφωνα με την W3Techs, το nginx χρησιμοποιείται στο 33.7% των τοποθεσιών από τα εκατομμύρια με τις περισσότερες επισκέψεις, τον Απρίλιο του περασμένου έτους αυτό το ποσοστό ήταν 31.9%, το προηγούμενο έτος - 41.8% (η πτώση εξηγείται από τη μετάβαση σε ξεχωριστή λογιστική του Cloudflare http υπηρέτης). Το μερίδιο της Apache μειώθηκε κατά τη διάρκεια του έτους από 39.5% σε 34%, και το μερίδιο της Microsoft IIS από 8.3% σε 7%. Το μερίδιο της LiteSpeed ​​αυξήθηκε από 6.3% σε 8.4%, και του Node.js από 0.8% σε 1.2%. Στη Ρωσία, το nginx χρησιμοποιείται στο 79.1% των περιοχών με τις περισσότερες επισκέψεις (πριν από ένα χρόνο - 78.9%).

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

  • Προστέθηκε η δυνατότητα επαλήθευσης πιστοποιητικών πελατών χρησιμοποιώντας εξωτερικές υπηρεσίες που βασίζονται στο πρωτόκολλο OCSP (Online Certificate Status Protocol). Για να ενεργοποιηθεί ο έλεγχος, προτείνεται η οδηγία ssl_ocsp, για τη διαμόρφωση του μεγέθους της κρυφής μνήμης - ssl_ocsp_cache, για τον επαναπροσδιορισμό της διεύθυνσης URL του προγράμματος χειρισμού OCSP που καθορίζεται στο πιστοποιητικό - ssl_ocsp_responder.
  • Περιλαμβάνεται η λειτουργική μονάδα ngx_stream_set_module, η οποία σας επιτρέπει να εκχωρήσετε μια τιμή στον διακομιστή μεταβλητής { listen 12345; ορίστε $true 1; }
  • Προστέθηκε η οδηγία proxy_cookie_flags για τον καθορισμό σημαιών για Cookies σε συνδέσεις μεσολάβησης. Για παράδειγμα, για να προσθέσετε τη σημαία "httponly" στο Cookie "one" και τις σημαίες "nosecure" και "samesite=strict" για όλα τα άλλα cookie, μπορείτε να χρησιμοποιήσετε την ακόλουθη κατασκευή: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure samesite=strict;

    Μια παρόμοια οδηγία userid_flags για την προσθήκη σημαιών σε Cookies εφαρμόζεται επίσης για τη λειτουργική μονάδα ngx_http_userid.

  • Προστέθηκαν οδηγίες "ssl_conf_command", "proxy_ssl_conf_command", "grpc_ssl_conf_command" και "uwsgi_ssl_conf_command", με τις οποίες μπορείτε να ορίσετε αυθαίρετες παραμέτρους για τη διαμόρφωση του OpenSSL. Για παράδειγμα, για να δώσετε προτεραιότητα στους κρυπτογράφησης ChaCha και στη σύνθετη διαμόρφωση των κρυπτογράφησης TLSv1.3, μπορείτε να καθορίσετε ssl_conf_command Επιλογές PrioritizeChaCha. ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
  • Προστέθηκε η οδηγία "ssl_reject_handshake", η οποία καθοδηγεί την απόρριψη όλων των προσπαθειών διαπραγμάτευσης συνδέσεων SSL (για παράδειγμα, μπορεί να χρησιμοποιηθεί για την απόρριψη όλων των κλήσεων με άγνωστα ονόματα κεντρικού υπολογιστή στο πεδίο SNI). server { listen 443 ssl; ssl_reject_handshake on? } server { listen 443 ssl; server_name example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
  • Η οδηγία proxy_smtp_auth προστέθηκε στον διακομιστή μεσολάβησης αλληλογραφίας, επιτρέποντάς σας να ελέγξετε την ταυτότητα του χρήστη στο backend χρησιμοποιώντας την εντολή AUTH και τον μηχανισμό PLAIN SASL.
  • Προστέθηκε η οδηγία "keepalive_time", η οποία περιορίζει τη συνολική διάρκεια ζωής κάθε σύνδεσης keep-alive, μετά την οποία η σύνδεση θα κλείσει (δεν πρέπει να συγχέεται με το keepalive_timeout, που ορίζει τον χρόνο αδράνειας μετά τον οποίο κλείνει η σύνδεση διατήρησης ζωντανής λειτουργίας).
  • Προστέθηκε η μεταβλητή $connection_time, μέσω της οποίας μπορείτε να λάβετε πληροφορίες σχετικά με τη διάρκεια της σύνδεσης σε δευτερόλεπτα με ακρίβεια χιλιοστού του δευτερολέπτου.
  • Μια παράμετρος "min_free" έχει προστεθεί στις οδηγίες "proxy_cache_path", "fastcgi_cache_path", "scgi_cache_path" και "uwsgi_cache_path", η οποία ρυθμίζει το μέγεθος της προσωρινής μνήμης με βάση τον καθορισμό του ελάχιστου μεγέθους ελεύθερου χώρου στο δίσκο.
  • Οι οδηγίες "lingering_close", "lingering_time" και "lingering_timeout" έχουν προσαρμοστεί για να λειτουργούν με το HTTP/2.
  • Ο κώδικας επεξεργασίας σύνδεσης στο HTTP/2 είναι κοντά στην υλοποίηση HTTP/1.x. Η υποστήριξη για τις μεμονωμένες ρυθμίσεις "http2_recv_timeout", "http2_idle_timeout" και "http2_max_requests" έχει διακοπεί υπέρ των γενικών οδηγιών "keepalive_timeout" και "keepalive_requests". Οι ρυθμίσεις "http2_max_field_size" και "http2_max_header_size" έχουν αφαιρεθεί και θα πρέπει να χρησιμοποιηθεί το "large_client_header_buffers".
  • Προστέθηκε μια νέα επιλογή γραμμής εντολών "-e", η οποία σας επιτρέπει να καθορίσετε ένα εναλλακτικό αρχείο για τη σύνταξη του αρχείου καταγραφής σφαλμάτων, το οποίο θα χρησιμοποιηθεί αντί για το αρχείο καταγραφής που καθορίζεται στις ρυθμίσεις. Αντί για το όνομα αρχείου, μπορείτε να καθορίσετε την ειδική τιμή stderr.

Πηγή: opennet.ru

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