איך להפעיל את HTTP/2 באפאצ'י על אובונטו

מאז תחילת ה־רשת העולמית (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 ובסופו של דבר לבזבוז רוחב פס ולדegrשת רשת.

הבעיות הנ"ל תמיד הובילו לדחיית בביצועים ולעלויות ראש בשימוש ברוחב פס גבוהות. HTTP/2 הגיעה לתמוך בבעיות אלו וכעת היא העתיד של פרוטוקולי HTTP.

יתרונות בשימוש ב־HTTP/2

היא מציעה את היתרונות הבאים:

  1. דחיסת כותרות הממזערת בקשות מלקוח ובכך מורידה את צריכת הרוחב פס. התוצאה היא מהירות טעינת דף מהירה.
  2. העברת מספר בקשות על חיבור TCP אחד. השרת והלקוח יכולים לפרק בקשת HTTP למספר מסגרות ולאגד אותם בקצה השני.
  3. ביצועים טובים יותר באינטרנט שמביאים לדרגת SEO טובה יותר.
  4. אבטחה משופרת מאחר ורוב הדפדפנים המובילים טוענים את HTTP/2 על HTTPS.
  5. HTTP/2 נחשבת יותר ידידותית לנייד תודות לתכונת דחיסת הכותרת.

אמנם, אנו הולכים לאפשר HTTP/2 על אפאצ'י על אובונטו 20.04 LTS ועל אובונטו 18.04 LTS.

תנאים מוקדמים:

לפני שתתחילו, וודאו שאתם מפעילים HTTPS על שרת האפאצ'י לפני שאתם מאפשרים HTTP/2. זה כי כל דפדפני האינטרנט המובילים תומכים ב- HTTP/2 מעל HTTPS. יש לי שם דומיין המכוון להופעה על אובונטו 20.04 הפועלת שרת אפאצ'י מאובטח באמצעות תעודת Let’s Encrypt.

כמו כן, מומלץ לכם להשתמש ב- אפאצ'י 2.4.26 וגרסאות מאוחרות יותר עבור שרתי ייצור המתכוונים לעבור ל- HTTP/2.

כדי לבדוק את גרסת אפאצ'י שאתם מפעילים, הריצו את הפקודה:

$ apache2 -v
Check Apache Version in Ubuntu

מהפלט, ניתן לראות כי אנו משתמשים בגרסה העדכנית ביותר, שהיא Apache 2.4.41 בזמן כתיבת המאמר הזה.

הפעלת HTTP/2 על Virtual Host של Apache

כדי להתחיל, ראשית יש לוודא שהשרת פועל ב-HTTP/1.1. ניתן לעשות זאת בדפדפן על ידי פתיחת כלי הפיתוח ב-גוגל כרום באמצעות השילוב Ctrl +SHIFT + I. לחץ על הכרטיסייה 'Network' ואתר את עמודת 'Protocol'.

Confirm HTTP Protocol Version

בשלב הבא, יש להפעיל את מודול HTTP/2 ב-Ubuntu על ידי ביצוע הפקודה הבאה.

$ sudo a2enmod http2
Enable HTTP/2 on Ubuntu

לאחר מכן, יש לאתר ולערוך את קובץ Virtual Host של SSL, אם הפעלת HTTPS באמצעות Let’s Encrypt, קובץ חדש נוצר עם סיומת le-ssl.conf.

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

הוסף את ההוראה הבאה לאחר התג <VirtualHost *:443>.

Protocols h2 http/1.1
Enable HTTP/2 on Apache

לשמירה על השינויים, יש לאתחל מחדש את שרת ה- Apache.

$ sudo systemctl restart apache2

כדי לבדוק האם HTTP/2 מופעל, יש לקבל את כותרות ה- HTTP באמצעות הפקודה הבאה של curl כפי שמוצג.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Support in Apache

עליך לקבל את הפלט שמוצג.

HTTP/2 200

בדפדפן, עדכן את האתר שלך. לאחר מכן שוב לכלי הפיתוח ווודא ש- HTTP/2 מסומן על ידי התו h2 בעמודת 'Protocol'.

Confirm HTTP/2 Protocol Version

כאשר משתמשים במודול mod_php עם 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 
Disable mod_php Module

לאחר מכן, להשבית את מודול ה־prefork MPM.

$ sudo a2dismod mpm_prefork
Disable Prefork MPM in Apache

לאחר השבתת המודולים, לאחר מכן, להפעיל את מודולי Event MPM, Fast_CGI, ו־setenvif כפי שמוצג.

$ sudo a2enmod mpm_event proxy_fcgi setenvif
Enable Event MPM in Apache

התקנת 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
Check HTTP/2 Protocol in Apache

אתה יכול גם להשתמש בכלי הפיתוח בדפדפן Google Chrome כדי לוודא כפי שתועד לפני. יש לנו עד סוף מדריך זה, מקווים שמצאת את המידע שימושי ושתוכל להפעיל HTTP/2 על Apache בקלות.

Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/