Κυκλοφόρησε ο κύριος κλάδος του nginx 1.25.3, εντός του οποίου συνεχίζεται η ανάπτυξη νέων χαρακτηριστικών. Ο παράλληλος σταθερός κλάδος 1.24.x περιέχει μόνο αλλαγές που σχετίζονται με την εξάλειψη σοβαρών σφαλμάτων και τρωτών σημείων. Στο μέλλον, με βάση τον κύριο κλάδο 1.25.x, θα σχηματιστεί ένας σταθερός κλάδος 1.26. Ο κώδικας του έργου είναι γραμμένος σε C και διανέμεται με την άδεια BSD.
Μεταξύ των αλλαγών:
- Η προστασία έναντι της μη φυσιολογικής δραστηριότητας των πελατών HTTP/2 έχει ενισχυθεί και, ειδικότερα, από επιθέσεις DoS της κλάσης «Rapid Reset», στην οποία δημιουργείται ένας μεγάλος αριθμός νημάτων άμεσης επαναφοράς σε μία μόνο σύνδεση HTTP/2. Στην προεπιλεγμένη διαμόρφωση, τέτοιες επιθέσεις περιορίζονται από το όριο στον αριθμό των αιτημάτων ανά σύνδεση "keepalive_requests" (μετά από κάθε 1000 αιτήματα η σύνδεση θα μηδενίζεται) και τους περιορισμούς "limit_req". Για να ανταποκριθείτε νωρίτερα σε πλημμύρες με αιτήματα μέσω μεγάλου αριθμού νημάτων, προστέθηκε ένας επιπλέον περιορισμός που δεν επιτρέπει τη δημιουργία περισσότερων από 256 (2 * max_concurrent_streams) νέων νημάτων ανά κύκλο επεξεργασίας συμβάντος από προεπιλογή. Το νέο όριο καθιστά δυνατή την έναρξη αποκλεισμού αιτημάτων πριν συμπληρωθεί το συνολικό όριο στον αριθμό των ταυτόχρονων νημάτων, για παράδειγμα όταν τα νήματα υποβάλλονται σε ασύγχρονη επεξεργασία ή ξεπλένονται. Μια παρόμοια αλλαγή συμπεριλήφθηκε επίσης στην κυκλοφορία του angie 1.3.1 (nginx fork), που δημοσιεύτηκε πριν από μια εβδομάδα.
- Βελτιωμένη διαχείριση των buffer που χρησιμοποιούνται κατά τον αυτόματο εντοπισμό συνδέσεων HTTP/2.
- Η απόδοση της εκκίνησης διαμορφώσεων με μεγάλο αριθμό οδηγιών «τοποθεσίας» έχει βελτιωθεί.
- Διορθώθηκε ένα σφάλμα διεργασίας εργασίας που μπορούσε να προκύψει κατά την προσπάθεια χρήσης HTTP/2 χωρίς SSL.
- Διορθώθηκε η εσφαλμένη επεξεργασία της κεφαλίδας "Κατάσταση" που επιστράφηκε από το backend με κενό επεξηγηματικό κείμενο.
- Διορθώθηκε μια διαρροή μνήμης κατά την αναδιαμόρφωση που παρουσιάστηκε κατά την κατασκευή με τη βιβλιοθήκη PCRE2.
- Έχει εισαχθεί ένα μεγάλο μέρος επιδιορθώσεων και βελτιώσεων που σχετίζονται με την υποστήριξη του πρωτοκόλλου HTTP/3.
Ταυτόχρονα, το njs 0.8.2, ένας διερμηνέας JavaScript για διακομιστή ιστού nginx. Ο διερμηνέας njs υλοποιεί πρότυπα ECMAScript και σας επιτρέπει να επεκτείνετε τις δυνατότητες επεξεργασίας αιτημάτων του nginx χρησιμοποιώντας σενάρια διαμόρφωσης. Τα σενάρια μπορούν να χρησιμοποιηθούν στο αρχείο διαμόρφωσης για να ορίσουν προηγμένη λογική επεξεργασίας αιτημάτων, να δημιουργήσουν διαμόρφωση, να δημιουργήσουν δυναμικά απαντήσεις, να τροποποιήσουν αιτήματα/απαντήσεις ή να δημιουργήσουν γρήγορα stubs για την επίλυση προβλημάτων σε εφαρμογές web. Η νέα έκδοση προσθέτει ένα αντικείμενο κονσόλας, το οποίο παρέχει τις μεθόδους error(), info(), log(), time(), timeEnd() και warn(). Η μέθοδος fs.existsSync() έχει προστεθεί στη λειτουργική μονάδα fs.
Μπορείτε επίσης να σημειώσετε τη δημοσίευση του διακομιστή εφαρμογών NGINX Unit 1.31.1, ο οποίος παρέχει μια λύση για την εκτέλεση εφαρμογών web σε διάφορες γλώσσες προγραμματισμού (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js και Java). Το NGINX Unit μπορεί να εκτελεί ταυτόχρονα πολλές εφαρμογές σε διαφορετικές γλώσσες προγραμματισμού, οι παράμετροι εκκίνησης των οποίων μπορούν να αλλάξουν δυναμικά χωρίς να απαιτείται επεξεργασία αρχείων διαμόρφωσης και επανεκκίνηση. Εκτός από τις διορθώσεις σφαλμάτων, η νέα έκδοση της μονάδας Wasm επιτρέπει τη φόρτωση δεδομένων μεγαλύτερα από 4 GB και κατά την απόκριση, μπορείτε να ορίσετε κωδικούς κατάστασης HTTP.
Πηγή: opennet.ru
