วิธีเปิดใช้งาน HTTP/2.0 ใน Nginx
HTTP/2 เป็นมาตรฐานล่าสุดสำหรับโปรโตคอล HTTP ซึ่งเป็นรุ่นต่อจาก HTTP/1.1 กำลังได้รับความนิยมมากขึ้นเนื่องจากประโยชน์ที่มอบให้กับนักพัฒนาเว็บและผู้ใช้โดยทั่วไป ให้การขนส่งที่ปรับให้เหมาะสมสำหรับซีแมนทิกส์ HTTP โดยสนับสนุนคุณลักษณะหลักทั้งหมดของ HTTP/1.1 แต่มีเป้าหมายที่จะมีประสิทธิภาพมากขึ้นในหลายๆ ด้าน
มีคุณลักษณะมากมายนอกเหนือจาก HTTP/2 ที่ให้ความเป็นไปได้มากขึ้นในการเพิ่มประสิทธิภาพเว็บไซต์/แอปพลิเคชัน โดยนำเสนอมัลติเพล็กซ์และการทำงานพร้อมกันอย่างแท้จริง การบีบอัดส่วนหัวที่ดีขึ้น (การเข้ารหัสแบบไบนารี) การจัดลำดับความสำคัญที่ดีขึ้น กลไกการควบคุมการไหลที่ดีขึ้น และโหมดการโต้ตอบใหม่ที่เรียกว่า “การพุชเซิร์ฟเวอร์ ” ที่ช่วยให้เซิร์ฟเวอร์สามารถพุชการตอบสนองต่อไคลเอนต์ได้ . ไม่ต้องพูดถึง HTTP/2 ขึ้นอยู่กับโปรโตคอล SPDY ทดลองของ Google
ดังนั้น เป้าหมายหลักของ HTTP/2 คือการลดเวลาในการโหลดหน้าเว็บโดยรวม ซึ่งจะช่วยปรับปรุงประสิทธิภาพ นอกจากนี้ยังมุ่งเน้นไปที่การใช้ทรัพยากรเครือข่ายและเซิร์ฟเวอร์ตลอดจนความปลอดภัย เนื่องจากต้องมีการเข้ารหัส HTTP/2, SSL/TLS
ในบทความนี้ คุณจะได้เรียนรู้วิธีเปิดใช้งาน Nginx ด้วยการรองรับ HTTP/2 ในเซิร์ฟเวอร์ Linux
ข้อกำหนดเบื้องต้น:
- การติดตั้งที่ใช้งานได้ของ NGINX เวอร์ชัน 1.9.5 หรือสูงกว่า สร้างขึ้นด้วยโมดูล ngx_http_v2_module
- ตรวจสอบให้แน่ใจว่าเว็บไซต์ของคุณใช้ใบรับรอง SSL/TLS หากคุณไม่มี คุณสามารถขอรับได้จาก Let's Encrypt หรือใช้ใบรับรองที่ลงนามด้วยตนเอง
คุณสามารถติดตั้ง NGINX หรือปรับใช้กับสแต็ก LEMP ตามที่อธิบายไว้ในคำแนะนำต่อไปนี้:
- วิธีการติดตั้ง Nginx บน CentOS 8
- วิธีการติดตั้งเซิร์ฟเวอร์ LEMP บน CentOS 8
- วิธีการติดตั้ง NGINX, MySQL/MariaDB และ PHP บน RHEL 8
- วิธีติดตั้ง LEMP Stack ด้วย PhpMyAdmin ใน Ubuntu 20.04
- ติดตั้ง Nginx ด้วย Server Blocks (โฮสต์เสมือน) บน Debian 10
- วิธีใช้ Nginx เป็น HTTP Load Balancer ใน Linux
วิธีเปิดใช้งาน HTTP/2.0 ใน NGINX
หากคุณติดตั้ง NGINX ไว้ ให้ตรวจสอบว่าถูกสร้างขึ้นด้วยโมดูล ngx_http_v2_module
โดยการรันคำสั่งต่อไปนี้
strings /usr/sbin/nginx | grep _module | grep -v configure| sort | grep ngx_http_v2_module
เมื่อคุณมีเว็บไซต์/แอปพลิเคชันที่ให้บริการโดย NGINX โดยมีการกำหนดค่า HTTPS ให้เปิดไฟล์บล็อกเซิร์ฟเวอร์เสมือนของเว็บไซต์ของคุณ (หรือ โฮสต์เสมือน) สำหรับ การแก้ไข
vi /etc/nginx/conf.d/example.com.conf [On CentOS/RHEL]
sudo nano /etc/nginx/sites-available/example.com.conf [On Ubuntu/Debian]
คุณสามารถเปิดใช้งานการสนับสนุน HTTP/2 ได้โดยการเพิ่มพารามิเตอร์ http2
ลงในคำสั่ง listen
ทั้งหมดตามที่แสดงในภาพหน้าจอต่อไปนี้
listen 443 ssl http2;
การกำหนดค่าบล็อกเซิร์ฟเวอร์ตัวอย่างมีลักษณะดังนี้
server {
server_name example.com www.example.com;
access_log /var/log/nginx/example.com_access.log;
error_log /var/log/nginx/example.com_error.log;
listen [::]:443 ssl ipv6only=on http2; # managed by Certbot
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
บันทึกการเปลี่ยนแปลงในไฟล์และปิด
จากนั้นตรวจสอบไวยากรณ์การกำหนดค่าของ NGINX หากไม่เป็นไร ให้เริ่มบริการ Nginx ใหม่
nginx -t
systemctl restart nginx
จากนั้น เปิดเว็บเบราว์เซอร์เพื่อตรวจสอบว่าเว็บไซต์ของคุณให้บริการผ่าน HTTP/2 หรือไม่
http://www.example.com
หากต้องการเข้าถึงส่วนหัว HTTP ให้คลิกขวาที่หน้าเว็บที่แสดง เลือก ตรวจสอบ จากรายการตัวเลือกเพื่อเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ จากนั้นคลิกแท็บ เครือข่าย และโหลดซ้ำ หน้า.
ตรวจสอบภายใต้ โปรโตคอล เพื่อดูส่วนหัวที่ไซต์ของคุณใช้ (หากคุณไม่เห็นส่วนหัวโปรโตคอล ให้คลิกขวาที่ส่วนหัวใดก็ได้ เช่น ชื่อ จากนั้นทำเครื่องหมาย Protocol จากรายการเพื่อแสดงเป็นส่วนหัว)
หากเว็บไซต์ของคุณทำงานบน HTTP/1.1 ภายใต้ โปรโตคอล คุณจะเห็น http/1.1 ดังที่แสดงในภาพหน้าจอต่อไปนี้
หากทำงานบน HTTP/2 ภายใต้ โปรโตคอล คุณจะเห็น h2
ดังที่แสดงในภาพหน้าจอต่อไปนี้ คุณอาจต้องการปิดการใช้งานแคชของเบราว์เซอร์เพื่อดูเนื้อหาล่าสุดที่ให้บริการโดยตรงจากเว็บเซิร์ฟเวอร์
นั่นคือทั้งหมด! สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบโมดูล ngx_http_v2_module อย่าลังเลที่จะถามคำถามผ่านแบบฟอร์มข้อเสนอแนะด้านล่าง