Πώς να ενεργοποιήσετε το HTTP/2 στον Apache στο Ubuntu


Από την έναρξη του World Wide Web (www), το πρωτόκολλο HTTP έχει εξελιχθεί με τα χρόνια για να παρέχει ασφαλές και γρήγορο ψηφιακό περιεχόμενο μέσω του Διαδίκτυο.

Η πιο ευρέως χρησιμοποιούμενη έκδοση είναι το HTTP 1.1 και, ενώ διαθέτει βελτιώσεις δυνατοτήτων και βελτιστοποιήσεις απόδοσης για την αντιμετώπιση των ελλείψεων των προηγούμενων εκδόσεων, υπολείπεται από μερικά άλλα σημαντικά χαρακτηριστικά που έχουν αντιμετωπιστεί από το HTTP/2.

Ποιοι είναι οι περιορισμοί του HTTP/1.1;

Το πρωτόκολλο HTTP/1.1 είναι γεμάτο με τις ακόλουθες ελλείψεις που το καθιστούν λιγότερο ιδανικό, ειδικά όταν εκτελείτε διακομιστές ιστού υψηλής επισκεψιμότητας:

  1. Καθυστερήσεις στη φόρτωση ιστοσελίδων λόγω μεγάλων κεφαλίδων HTTP.
  2. Το HTTP/1.1 μπορεί να στείλει μόνο ένα αίτημα για κάθε αρχείο ανά σύνδεση TCP.
  3. Δεδομένου ότι το HTTP/1.1 επεξεργάζεται ένα αίτημα για κάθε σύνδεση TCP, τα προγράμματα περιήγησης αναγκάζονται να στείλουν έναν κατακλυσμό από παράλληλες συνδέσεις TCP για να επεξεργαστούν ταυτόχρονα τα αιτήματα. Αυτό οδηγεί σε συμφόρηση TCP και, τελικά, σπατάλη εύρους ζώνης και υποβάθμιση του δικτύου.

Τα προαναφερθέντα προβλήματα συχνά οδηγούσαν σε υποβάθμιση της απόδοσης και υψηλά γενικά κόστη στη χρήση εύρους ζώνης. Το HTTP/2 εμφανίστηκε για να αντιμετωπίσει αυτά τα προβλήματα και είναι τώρα το μέλλον για τα πρωτόκολλα HTTP.

Πλεονεκτήματα της χρήσης HTTP/2

Προσφέρει τα ακόλουθα πλεονεκτήματα:

  1. Συμπίεση κεφαλίδας που ελαχιστοποιεί τα αιτήματα πελατών και συνεπώς μειώνει την κατανάλωση εύρους ζώνης. Το αποτέλεσμα που προκύπτει είναι οι γρήγορες ταχύτητες φόρτωσης σελίδας.
  2. Πολυπλεξία πολλών αιτημάτων σε μία σύνδεση TCP. Τόσο ο διακομιστής όσο και ο πελάτης μπορούν να αναλύσουν ένα αίτημα HTTP σε πολλαπλά πλαίσια και να τα ομαδοποιήσουν ξανά στο άλλο άκρο.
  3. Ταχύτερες επιδόσεις ιστού που κατά συνέπεια οδηγούν σε καλύτερη κατάταξη SEO.
  4. Βελτιωμένη ασφάλεια δεδομένου ότι τα περισσότερα προγράμματα περιήγησης γενικής ροής φορτώνουν το HTTP/2 μέσω HTTPS.
  5. Το HTTP/2 θεωρείται πιο φιλικό για κινητά χάρη στη λειτουργία συμπίεσης κεφαλίδας.

Τούτου λεχθέντος, θα ενεργοποιήσουμε το HTTP/2 στο Apache στο Ubuntu 20.04 LTS και το Ubuntu 18.04 LTS.

Προαπαιτούμενα:

Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε ενεργοποιήσει το HTTPS στον διακομιστή ιστού Apache πριν ενεργοποιήσετε το HTTP/2. Αυτό συμβαίνει επειδή όλα τα κύρια προγράμματα περιήγησης ιστού υποστηρίζουν HTTP/2 έναντι HTTPS. Έχω ένα όνομα τομέα που αναφέρεται σε μια παρουσία στο Ubuntu 20.04 που εκτελεί διακομιστή Apache και είναι ασφαλής χρησιμοποιώντας το πιστοποιητικό Let’s Encrypt.

Επίσης, συνιστάται να έχετε Apache 2.4.26 και νεότερες εκδόσεις για διακομιστές παραγωγής που σκοπεύουν να κάνουν μια στροφή στο HTTP/2.

Για να ελέγξετε την έκδοση του Apache που εκτελείτε, εκτελέστε την εντολή:

apache2 -v

Από την έξοδο, μπορείτε να δείτε ότι χρησιμοποιούμε την πιο πρόσφατη έκδοση, η οποία είναι Apache 2.4.41 τη στιγμή της εγγραφής αυτού του άρθρου.

Ενεργοποιήστε το HTTP/2 σε έναν εικονικό κεντρικό υπολογιστή Apache

Για να ξεκινήσετε, πρώτα επιβεβαιώστε ότι ο διακομιστής ιστού εκτελεί HTTP/1.1. Μπορείτε να το κάνετε αυτό σε ένα πρόγραμμα περιήγησης ανοίγοντας την ενότητα εργαλείων προγραμματιστή στο Google chrome χρησιμοποιώντας τον συνδυασμό Ctrl +SHIFT + I. Κάντε κλικ στην καρτέλα "Δίκτυο" και εντοπίστε τη στήλη "Πρωτόκολλο".

Στη συνέχεια, ενεργοποιήστε τη λειτουργική μονάδα HTTP/2 στο Ubuntu εκτελώντας την ακόλουθη εντολή.

sudo a2enmod http2

Στη συνέχεια, εντοπίστε και επεξεργαστείτε το αρχείο εικονικού κεντρικού υπολογιστή SSL, εάν έχετε ενεργοποιήσει το HTTPS χρησιμοποιώντας το Let's Encrypt, δημιουργείται ένα νέο αρχείο με ένα le-ssl.conf επίθημα.

sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

Εισαγάγετε την παρακάτω οδηγία μετά την ετικέτα .

Protocols h2 http/1.1

Για να αποθηκεύσετε τις αλλαγές, επανεκκινήστε τον διακομιστή ιστού Apache.

sudo systemctl restart apache2

Για να ελέγξετε εάν το HTTP/2 είναι ενεργοποιημένο, ανακτήστε τις κεφαλίδες HTTP χρησιμοποιώντας την ακόλουθη εντολή curl όπως εμφανίζεται.

curl -I --http2 -s https://domain.com/ | grep HTTP

Θα πρέπει να λάβετε την έξοδο που εμφανίζεται.

HTTP/2 200

Στο πρόγραμμα περιήγησης, φορτώστε ξανά τον ιστότοπό σας. Στη συνέχεια, επιστρέψτε στα εργαλεία προγραμματιστή και επιβεβαιώστε το HTTP/2 που υποδηλώνεται με την ετικέτα h2 στη στήλη "Πρωτόκολλο".

Όταν χρησιμοποιείτε το mod_php Module με Apache

Εάν εκτελείτε το Apache παράλληλα με τη λειτουργική μονάδα mod_php, πρέπει να μεταβείτε σε PHP-FPM. Αυτό συμβαίνει επειδή η λειτουργική μονάδα mod_php χρησιμοποιεί τη λειτουργική μονάδα prefork MPM η οποία δεν υποστηρίζεται από το HTTP/2. Πρέπει να απεγκαταστήσετε το prefork MPM και να μεταβείτε στη λειτουργική μονάδα mpm_event που θα υποστηρίζεται από το HTTP/2.

Εάν χρησιμοποιείτε τη λειτουργική μονάδα PHP 7.4 mod_php, για παράδειγμα, απενεργοποιήστε την όπως φαίνεται:

sudo a2dismod php7.4 

Στη συνέχεια, απενεργοποιήστε τη μονάδα prefork MPM.

sudo a2dismod mpm_prefork

Μετά την απενεργοποίηση των λειτουργικών μονάδων, στη συνέχεια, ενεργοποιήστε τις λειτουργικές μονάδες MPM συμβάντος, Fast_CGI και setenvif όπως φαίνεται.

sudo a2enmod mpm_event proxy_fcgi setenvif

Εγκαταστήστε το PHP-FPM στο Ubuntu

Στη συνέχεια, εγκαταστήστε και ξεκινήστε το PHP-FPM όπως φαίνεται.

sudo apt install php7.4-fpm 
sudo systemctl start php7.4-fpm

Στη συνέχεια, ενεργοποιήστε το PHP-FPM για έναρξη κατά την εκκίνηση.

sudo systemctl enable php7.4-fpm

Στη συνέχεια, ενεργοποιήστε το PHP-FPM ως χειριστή PHP του Apache και επανεκκινήστε τον διακομιστή ιστού Apache για να πραγματοποιηθούν οι αλλαγές.

sudo a2enconf php7.4-fpm

Ενεργοποιήστε την υποστήριξη HTTP/2 στο Apache Ubuntu

Στη συνέχεια, ενεργοποιήστε τη λειτουργική μονάδα HTTP/2 όπως πριν.

sudo a2enmod http2

Κάντε επανεκκίνηση του Apache για να συγχρονίσετε όλες τις αλλαγές.

sudo systemctl restart apache2

Τέλος, μπορείτε να ελέγξετε εάν ο διακομιστής σας χρησιμοποιεί το πρωτόκολλο HTTP/2 χρησιμοποιώντας την εντολή curl όπως φαίνεται.

curl -I --http2 -s https://domain.com/ | grep HTTP

Μπορείτε επίσης να επιλέξετε να χρησιμοποιήσετε τα εργαλεία προγραμματιστή στο πρόγραμμα περιήγησης Google Chrome για επαλήθευση όπως τεκμηριώθηκε προηγουμένως. Έχουμε φτάσει στο τέλος αυτού του οδηγού. Ελπίζουμε ότι βρήκατε τις πληροφορίες πολύτιμες και ότι μπορείτε να ενεργοποιήσετε άνετα το HTTP/2 στο Apache με ευκολία.