- วันนี้อัพเกรตเครื่อง 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 ด้วยคำสั่ง
sudo a2enmod http2
- เมื่อตรวจสอบแฟ้ม /etc/apache2/mods-enabled/http2.conf (ด้วย editor ที่ชื่นชอบ) จะพบว่ามีข้อความต่อไปนี้อยู่แล้ว
Protocols h2 h2c http/1.1
- โดยปกติ Http/1 จะถูกเรียกใช้ก่อนเสมอ เว้นแต่ว่า web browser นั้นจะรองรับ http/2 แต่เราต้องการ http/2 ถูกเลือกก่อนจึงต้องกำหนดตามนั้น
- แต่ web browser ก็มีการเลือก Protocol เองด้วยเพื่อเป็นการบังคับให้เลือก ตามลำดับของ server ให้ใส่ข้อความต่อไปนี้เพิ่มลงไป
ProtocolsHonorOrder On
*** จากการทดสอบพบว่า web browser สมัยใหม่เลือก http/2 ก่อนอยู่แล้ว ไม่จำเป็นต้องใส่ก็ได้ เพราะงั้นแค่เปิดดูแล้วก็ออกจากแฟ้ม
- รีสตาร์ท apache2 ด้วยคำสั่ง
sudo systemctl restart apache2
- ตรวจสอบว่า เป็น http/2 แล้วหรือไม่ด้วยคำสั่ง
curl -I --http2 -s https://domain.com/ | grep HTTP
ได้ผลดังภาพ
แปลว่า http/2 ทำงานแล้ว
- ทีนี้เว็บเรามันทำด้วย mod_php ต้องเปลี่ยนมาใช้ PHP-FPM
- ติดตั้ง php7.4-fpm เพิ่มด้วยคำสั่ง
sudo apt install -y php7.4-fpm
- ปิดการใช้งาน mod_php ด้วยคำสั่ง
sudo a2dismod php7.4
- ปิดการใช้งาน apache mpm_prefork ด้วยคำสั่ง
sudo a2dismod mpm_prefork
- หลังจากนั้นเปิด การทำงานของ mpm_event, proxy_fcgi และ setenvif
sudo a2enmod mpm_event proxy_fcgi setenvif
- เปิดการทำงานของ php7.4-fpm ด้วยคำสั่ง
sudo systemctl start php7.4-fpm
- ให้ php7.4-fpm ทำงานทุกครั้งที่รีสตาร์ท
sudo systemctl enable php7.4-fpm
- เปิดการทำงานของ php7.4-fpm ใน apache2
sudo a2enconf php7.4-fpm
- เริ่มการทำงานของ apache2 ใหม่
sudo systemctl restart apache2
- ทดสอบว่าเป็น http/2 แล้วด้วยคำสั่ง
curl -I --http2 -s https://domain.com/ | grep HTTP
ได้ผลดังภาพ
- จริงๆ ตรวจสอบด้วย web browser ก็ได้ แต่อยากอวด command line
- จบขอให้สนุก
อ้างอิง