ค้นหาเว็บไซต์

วิธีเปิดใช้งาน 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 อย่าลังเลที่จะถามคำถามผ่านแบบฟอร์มข้อเสนอแนะด้านล่าง