ວິທີການເປີດໃຊ້ HTTP/2.0 ໃນ Nginx


HTTP/2 ແມ່ນມາດຕະຖານລ້າສຸດ ສຳ ລັບໂປໂຕຄອນ HTTP, ມັນແມ່ນຜູ້ສືບທອດຂອງ HTTP/1.1. ມັນໄດ້ຮັບຄວາມນິຍົມຫລາຍຂື້ນຍ້ອນຜົນປະໂຫຍດທີ່ມັນ ນຳ ມາສູ່ຜູ້ພັດທະນາເວັບແລະຜູ້ໃຊ້ທົ່ວໄປ. ມັນສະ ໜອງ ການຂົນສົ່ງທີ່ດີທີ່ສຸດ ສຳ ລັບ HTTP semantics ໂດຍການສະ ໜັບ ສະ ໜູນ ທຸກໆລັກສະນະຫຼັກຂອງ HTTP/1.1 ແຕ່ມີຈຸດປະສົງໃຫ້ມີປະສິດທິພາບຫຼາຍຂື້ນໃນຫຼາຍດ້ານ

ມັນມີຫຼາຍລັກສະນະຢູ່ດ້ານເທິງຂອງ HTTP/2 ທີ່ຊ່ວຍໃຫ້ທ່ານມີຄວາມເປັນໄປໄດ້ຫຼາຍຂື້ນໃນການເພີ່ມປະສິດທິພາບຂອງເວັບໄຊທ໌້/ການ ນຳ ໃຊ້. ມັນ ນຳ ສະ ເໜີ ແບບທະວີຄູນແລະກົງກັນຂ້າມທີ່ແທ້ຈິງ, ການບີບອັດຫົວຂໍ້ທີ່ດີກວ່າ (ການເຂົ້າລະຫັດຖານສອງ), ການຈັດ ລຳ ດັບຄວາມ ສຳ ຄັນ, ກົນໄກການຄວບຄຸມການໄຫຼເຂົ້າທີ່ດີກວ່າແລະຮູບແບບການໂຕ້ຕອບ ໃໝ່ ທີ່ເອີ້ນວ່າ“ ການຊຸກຍູ້ຂອງເຄື່ອງແມ່ຂ່າຍ” ເຊິ່ງຊ່ວຍໃຫ້ເຄື່ອງແມ່ຂ່າຍສາມາດຊຸກຍູ້ການຕອບຮັບໃຫ້ກັບລູກຄ້າ. ບໍ່ໄດ້ກ່າວເຖິງ, HTTP/2 ແມ່ນອີງໃສ່ໂປໂຕຄອນ SPDY ແບບທົດລອງຂອງ Google.

ດັ່ງນັ້ນ, ຈຸດສຸມຕົ້ນຕໍຂອງ HTTP/2 ແມ່ນເພື່ອຫຼຸດຜ່ອນເວລາໂຫຼດ ໜ້າ ເວບໄຊທ໌ໂດຍລວມ, ດັ່ງນັ້ນການປັບປຸງປະສິດຕິພາບ. ມັນຍັງສຸມໃສ່ການໃຊ້ເຄືອຂ່າຍແລະການ ນຳ ໃຊ້ຊັບພະຍາກອນຂອງ server ເຊັ່ນດຽວກັນກັບຄວາມປອດໄພເພາະວ່າດ້ວຍການເຂົ້າລະຫັດ HTTP/2, ການເຂົ້າລະຫັດ SSL/TLS ແມ່ນ ຈຳ ເປັນ.

ໃນບົດຂຽນນີ້, ທ່ານຈະໄດ້ຮຽນຮູ້ວິທີທີ່ຈະຊ່ວຍໃຫ້ Nginx ມີການສະ ໜັບ ສະ ໜູນ HTTP/2 ໃນເຊີຟເວີ Linux.

  • ການຕິດຕັ້ງແບບ NGINX ເວີຊັນ 1.9.5 ຫຼືສູງກວ່າ, ສ້າງດ້ວຍລະຫັດ ngx_http_v2_module.
  • ໃຫ້ແນ່ໃຈວ່າເວບໄຊທ໌ຂອງທ່ານໃຊ້ໃບຢັ້ງຢືນ SSL/TLS, ຖ້າທ່ານບໍ່ມີມັນ, ທ່ານສາມາດຂໍຈາກ Let’s Encrypt ຫຼືໃຊ້ໃບຢັ້ງຢືນທີ່ເຊັນດ້ວຍຕົນເອງ.

ທ່ານສາມາດຕິດຕັ້ງ NGINX ຫຼືໃຊ້ມັນດ້ວຍ LEMP stack ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນຄູ່ມືຕໍ່ໄປນີ້:

  • ວິທີການຕິດຕັ້ງ Nginx ໃນ CentOS 8
  • ວິທີການຕິດຕັ້ງ LEMP Server ໃນ CentOS 8
  • ວິທີການຕິດຕັ້ງ NGINX, MySQL/MariaDB ແລະ PHP ໃນ RHEL 8
  • ວິທີຕິດຕັ້ງ LEMP Stack ກັບ PhpMyAdmin ໃນ Ubuntu 20.04
  • ຕິດຕັ້ງ Nginx ກັບ Server Server (Virtual Hosts) ເທິງ 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, ເປີດເວບໄຊທ໌ຂອງທ່ານທີ່ເປັນເຄື່ອງແມ່ຂ່າຍ virtual (ຫລື virtual host) ເພື່ອແກ້ໄຂ.

# 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 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    
}

ບັນທຶກການປ່ຽນແປງຂອງເອກະສານແລະປິດມັນ.

ຫຼັງຈາກນັ້ນກວດເບິ່ງ syntax ການຕັ້ງຄ່າຂອງ NGINX, ຖ້າມັນບໍ່ເປັນຫຍັງ, ໃຫ້ບໍລິການ Nginx ເລີ່ມຕົ້ນ ໃໝ່.

# nginx -t
# systemctl restart nginx

ຕໍ່ໄປ, ເປີດໂປແກຼມທ່ອງເວັບເພື່ອກວດສອບວ່າເວັບໄຊທ໌ຂອງທ່ານ ກຳ ລັງບໍລິການຜ່ານ HTTP/2 ຫຼືບໍ່.

http://www.example.com

ເພື່ອເຂົ້າເຖິງຫົວຂໍ້ HTTP, ໃຫ້ຄລິກຂວາໃສ່ ໜ້າ ເວບທີ່ສະແດງ, ເລືອກ Inspect ຈາກລາຍຊື່ຕົວເລືອກເພື່ອເປີດເຄື່ອງມືຂອງນັກພັດທະນາ, ຈາກນັ້ນກົດປຸ່ມ Network, ແລະໂຫຼດ ໜ້າ ນີ້ຄືນ.

ກວດເບິ່ງຢູ່ພາຍໃຕ້ໂປໂຕຄອນເພື່ອເບິ່ງເວັບໄຊທ໌ທີ່ທ່ານ ກຳ ລັງໃຊ້ (ຖ້າທ່ານບໍ່ເຫັນໂປແກຼມ Protocols, ໃຫ້ຄລິກຂວາໃສ່ຫົວຂໍ້ໃດກໍ່ໄດ້ເຊັ່ນ: ຊື່, ຫຼັງຈາກນັ້ນກວດເບິ່ງໂປໂຕຄອນຈາກລາຍຊື່ເພື່ອສະແດງມັນເປັນ header).

ຖ້າເວັບໄຊທ໌້ຂອງທ່ານ ກຳ ລັງໃຊ້ງານຢູ່ HTTP/1.1, ພາຍໃຕ້ Protocol, ທ່ານຈະເຫັນ http/1.1 ດັ່ງທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍຕໍ່ໄປນີ້.

ຖ້າມັນ ກຳ ລັງໃຊ້ງານຢູ່ HTTP/2, ພາຍໃຕ້ Protocol, ທ່ານຈະເຫັນ h2 ຕາມທີ່ສະແດງໃນ ໜ້າ ຈໍຕໍ່ໄປນີ້. ທ່ານອາດຈະຕ້ອງການປິດ cache ຂອງ browser ເພື່ອເບິ່ງເນື້ອຫາລ້າສຸດທີ່ໄດ້ຮັບການບໍລິການຈາກ webserver ໂດຍກົງ.

ຫມົດເທົ່ານີ້! ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ໃຫ້ເບິ່ງເອກະສານ ໜ້າ ຈໍ ngx_http_v2_module. ຢ່າລັງເລທີ່ຈະຖາມ ຄຳ ຖາມຜ່ານແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.