How to apache2 HTTP/2

วันนี้อัพเกรตเครื่อง licensing เป็น 20.04.1 เลยมาดูว่ามีอะไรที่ควรเปลี่ยนอีกบ้าง ก็มี HTTP/2 นี่ละ ออกมาหลายปีแล้วยังไม่ได้เริ่มใช้งาน เท่าที่ตรวจสอบเว็บเซิร์ฟเวอร์ฝั่ง windows เป็น http/2 เกือบหมดแล้ว https://thanwa.medium.com/http-2-คืออะไร-แตกต่างจาก-http-1-1-อย่างไร-5dfb14e46ae4 HTTP/1.1 และ HTTP/2 ต่างกันอย่างไร เริ่มได้ ตรวจสอบก่อนว่า server ใช้ http/2 หรือไม่ทำได้โดยใช้ web developer tool บน web browser เช่น Firefox กด F12 คลิกหัวข้อ Network ซึ่งในครั้งแรกจะไม่สามารถดูได้ว่าใช้ http/2 แล้วหรือไม่ ให้คลิกขวาดังรูป แล้วเลือก Protocol จะได้เป็น จะเห็น http/1.1 ในช่อง Protocol ถ้าเป็น http/2 จะได้ดังภาพ ขั้นตอนต่อไปนี้ทำบน Ubuntu 20.04.1 อาจใช้ได้กับ 18.04.x ด้วยเช่นกัน เริ่มด้วยการเปิด module ของ apache2 ที่ชื่อ http2 ด้วยคำสั่ง เมื่อตรวจสอบแฟ้ม /etc/apache2/mods-enabled/http2.conf (ด้วย editor ที่ชื่นชอบ) จะพบว่ามีข้อความต่อไปนี้อยู่แล้ว โดยปกติ Http/1 จะถูกเรียกใช้ก่อนเสมอ เว้นแต่ว่า web browser นั้นจะรองรับ http/2 แต่เราต้องการ http/2 ถูกเลือกก่อนจึงต้องกำหนดตามนั้น แต่ web browser ก็มีการเลือก Protocol เองด้วยเพื่อเป็นการบังคับให้เลือก ตามลำดับของ server ให้ใส่ข้อความต่อไปนี้เพิ่มลงไป *** จากการทดสอบพบว่า web browser สมัยใหม่เลือก http/2 ก่อนอยู่แล้ว ไม่จำเป็นต้องใส่ก็ได้ เพราะงั้นแค่เปิดดูแล้วก็ออกจากแฟ้ม รีสตาร์ท apache2 ด้วยคำสั่ง ตรวจสอบว่า เป็น http/2 แล้วหรือไม่ด้วยคำสั่ง ได้ผลดังภาพ แปลว่า http/2 ทำงานแล้ว ทีนี้เว็บเรามันทำด้วย mod_php ต้องเปลี่ยนมาใช้ PHP-FPM ติดตั้ง php7.4-fpm เพิ่มด้วยคำสั่ง ปิดการใช้งาน mod_php ด้วยคำสั่ง ปิดการใช้งาน apache mpm_prefork ด้วยคำสั่ง หลังจากนั้นเปิด การทำงานของ mpm_event, proxy_fcgi และ setenvif เปิดการทำงานของ php7.4-fpm ด้วยคำสั่ง ให้ php7.4-fpm ทำงานทุกครั้งที่รีสตาร์ท เปิดการทำงานของ php7.4-fpm ใน apache2 เริ่มการทำงานของ apache2 ใหม่ ทดสอบว่าเป็น http/2 แล้วด้วยคำสั่ง ได้ผลดังภาพ จริงๆ ตรวจสอบด้วย web browser ก็ได้ แต่อยากอวด command line จบขอให้สนุก อ้างอิง https://httpd.apache.org/docs/2.4/howto/http2.html

Read More »