HTTP/2 เป็นโปรโตคอลมัลติเพล็กซ์ที่แข็งแกร่งสำหรับการปรับปรุงความเร็วโหลดหน้าเว็บและความปลอดภัย ในบทช่วยสอนนี้เราจะได้เรียนรู้วิธีการตั้งค่า Nginx ด้วยการสนับสนุน HTTP/2
ภาพรวม
Nginx เป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์สที่รวดเร็วและเชื่อถือได้ มันได้รับความนิยมเนื่องจากรอยเท้าหน่วยความจำต่ำ, การปรับสมดุลโหลด, ความยืดหยุ่นสูง, การแคช, การสนับสนุนสำหรับโปรโตคอลส่วนใหญ่และการกลับพร็อกซิงกลับ ทีนี้มาพูดถึงวิธีที่ Nginx เปิดใช้งานโปรโตคอล HTTTP2 หนึ่งในโปรโตคอลที่รองรับโดย Nginx คือ HTTP/2 ซึ่งเผยแพร่ในเดือนพฤษภาคม 2558 ข้อได้เปรียบหลักของ HTTP/2 คือความเร็วการถ่ายโอนที่สูงสำหรับเว็บไซต์ที่มีเนื้อหามากมายลดการโหลดบนเว็บเซิร์ฟเวอร์ ในการเชื่อมต่อ TCP เดียว NGINX เปิดใช้งาน HTTP2 เป็นรุ่นที่ได้รับการปรับปรุงของโปรโตคอล HTTP ก่อนที่เราจะเริ่มต้นเราจะต้องใช้เซิร์ฟเวอร์ Ubuntu หรือ Debian สองสามตัวด้วยใบรับรอง SSL ในบทช่วยสอนนี้เราจะแนะนำคุณทีละขั้นตอนเกี่ยวกับวิธีการเปิดใช้งาน HTTP2 บน Ubuntu
- อัปเดตแพ็คเกจและการติดตั้ง nginx
- เปิดใช้งานการสนับสนุน HTTP/2
- การเพิ่มชื่อเซิร์ฟเวอร์
- การเพิ่มใบรับรอง SSL
- การลบ ciphers
- เปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดเป็น https
- รีสตาร์ท nginx
- บทสรุป
ขั้นตอนที่ 1: การอัปเดตแพ็คเกจและการติดตั้ง nginx
ขั้นตอนแรกคือการอัปเดตและอัพเกรดที่เก็บในระบบบรรจุภัณฑ์ APT การใช้การอัปเดตจะดาวน์โหลดแพ็คเกจเวอร์ชันล่าสุดและการอัปเกรดจะติดตั้งแพ็คเกจเวอร์ชันล่าสุดในรายการ เรียกใช้คำสั่ง APT ด้านล่างเพื่ออัปเดตและอัปเกรดแพ็คเกจ
sudo apt-get update && apt-get upgrade
ขั้นตอนต่อไปคือการติดตั้งแพ็คเกจ Nginx เวอร์ชันล่าสุด การสนับสนุนสำหรับโปรโตคอล HTTP/2 ได้รับการแนะนำใน NGINX เวอร์ชัน 1.9.5 ขึ้นไป ดังนั้นเราจะต้องติดตั้งแพ็คเกจ Nginx เวอร์ชันล่าสุด เรียกใช้คำสั่ง APT APT APT เพื่อติดตั้งแพ็คเกจ NGINX:
sudo apt-get install nginx
คุณจะได้รับแจ้งให้ยืนยันกระบวนการติดตั้งทีละขั้นตอน เลือกตัวเลือกใช่และเสร็จสิ้นกระบวนการติดตั้ง หลังจากกระบวนการติดตั้งเสร็จสิ้นขั้นตอนต่อไปคือการตรวจสอบเวอร์ชันของแพ็คเกจไม่ว่าเราจะติดตั้งเวอร์ชันที่เหมาะสมหรือไม่ คุณสามารถตรวจสอบเวอร์ชันของเว็บเซิร์ฟเวอร์ Nginx ได้โดยพิมพ์คำสั่ง:
sudo nginx -v
ผลลัพธ์ของคำสั่งตรวจสอบเวอร์ชันข้างต้นควรคล้ายกับต่อไปนี้:
nginx version: nginx/1.10.0 (Ubuntu)
ขั้นตอนที่ 2: เปิดใช้งานการสนับสนุน HTTP/2
หลังจากติดตั้งแพ็คเกจ NGINX เราต้องเปิดใช้งาน HTTP2 NGINX ผู้ใช้ต้องเปลี่ยนพอร์ตการฟังจาก 80 เป็น 443 มาเปิดไฟล์กำหนดค่า Nginx:
sudo nano /etc/nginx/sites-available/domain-name.com
คุณสามารถเห็นค่าเริ่มต้นของ Nginx ถูกตั้งค่าเป็นฟังคือพอร์ต 80 ฟัง 80 default_server; ฟัง [::]: 80 default_server; อย่างที่คุณเห็นว่ามีตัวแปรฟังสองตัวที่แตกต่างกัน ตัวแปรฟังตัวแรกสำหรับการเชื่อมต่อ IPV4Connections ทั้งหมดและตัวที่สองสำหรับการเชื่อมต่อ IPv6 เราจะเปิดใช้งานการเข้ารหัสสำหรับตัวแปรทั้งสอง เปลี่ยนหมายเลขพอร์ตการฟังเป็น 443 และเพิ่มการเชื่อมต่อ SSL สำหรับโปรโตคอล HTTPS ดังที่แสดงด้านล่าง: ฟัง 443 SSL http2 default_server; ฟัง [::]: 443 SSL http2 default_server; โปรดสังเกตว่านอกเหนือจาก SSL แล้วเรายังเพิ่ม HTTP2 Nginx สามารถใช้เบราว์เซอร์ที่รองรับโปรโตคอล HTTP/2 ได้
ขั้นตอนที่ 3: การเพิ่มชื่อเซิร์ฟเวอร์
ขั้นตอนต่อไปคือการเปลี่ยนเซิร์ฟเวอร์ \ _name เพื่อให้ชื่อเซิร์ฟเวอร์เชื่อมโยงกับชื่อโดเมน ผู้ใช้เพียงแค่ต้องเปลี่ยนชื่อเซิร์ฟเวอร์ในไฟล์การกำหนดค่า ค้นหารายการเซิร์ฟเวอร์ \ _name ในไฟล์กำหนดค่าและเปลี่ยน _ เป็นโดเมนจริงของคุณเช่นนี้:
server_name example.com www.example.com;
บันทึกไฟล์การกำหนดค่าเซิร์ฟเวอร์โดยการแก้ไขในตัวแก้ไขข้อความ คุณสามารถตรวจสอบการกำหนดค่า Nginx สำหรับข้อผิดพลาดทางไวยากรณ์ด้วยคำสั่ง:
sudo nginx -t
หากไวยากรณ์ไม่มีข้อผิดพลาดคุณจะเห็นเอาต์พุตด้านล่าง: nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์ก็โอเค nginx: การกำหนดค่าไฟล์ /etc/nginx/nginx.conf การทดสอบสำเร็จ
ขั้นตอนที่ 4: การเพิ่มใบรับรอง SSL
ขั้นตอนต่อไปคือการเปิดใช้งานการกำหนดค่า NGINX HTTPS เพื่อใช้ใบรับรอง SSL ของคุณ คุณสามารถสร้างใบรับรองที่ลงนามด้วยตนเองหรือ ติดตั้งใบรับรองฟรีจาก Let’s Encrypt หากคุณไม่มีใบรับรอง SSL โปรดติดตามบทช่วยสอนนี้ เพิ่มใบรับรอง SSL ของคุณภายในไดเรกทอรีการกำหนดค่า NGINX คล้ายกับ:
sudo mkdir /etc/nginx/ssl
คัดลอกใบรับรองของคุณและคีย์ส่วนตัวไปยังตำแหน่งนี้และแทนที่ Example.com ด้วยชื่อโดเมนจริงของคุณ: sudo cp /path/to/your/certificate.crt /etc/nginx/ssl/example.com.crt sudo cp /path/to/your/private.key /etc/nginx/ssl/example.com.key ตอนนี้เปิดไฟล์การกำหนดค่าเซิร์ฟเวอร์ Nginx อีกครั้ง เพิ่มและกำหนดค่าสาย SSL ใหม่ภายในบล็อกเซิร์ฟเวอร์ Nginx พร้อมตำแหน่งของใบรับรองของคุณเพื่อเปิดใช้งานการกำหนดค่า Nginx SSL: sudo nano /etc/nginx/sites-available/domain-name.com ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; บันทึกไฟล์ไฟล์ nginx และออกจากตัวแก้ไขข้อความ
ขั้นตอนที่ 5: การลบ ciphers
Cipher เป็นอัลกอริทึมที่ใช้ในการเข้ารหัสสำหรับการเข้ารหัสข้อมูลและการถอดรหัส ชุดรหัสเป็นอัลกอริทึมการเข้ารหัสลับที่ใช้เพื่อรักษาความปลอดภัยการเชื่อมต่อเครือข่าย HTTP/2 มีบัญชีดำขนาดใหญ่ที่ไม่ปลอดภัยซึ่งจำเป็นต้องลบออก ที่นี่เราจะใช้ชุดรหัสยอดนิยมที่ได้รับอนุมัติจากอินเทอร์เน็ตยักษ์ใหญ่ CloudFlare เปิดไฟล์กำหนดค่า nginx ต่อไปนี้ /etc/nginx/nginx.conf และเพิ่มบรรทัดด้านล่างหลังจาก ssl \ _prefer \ _server_ciphers on บรรทัดเหล่านี้รวมรายการของ ciphers ล่าสุดที่เบราว์เซอร์ HTTP2 เข้าใจ
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+
AES256:EECDH+3DES:RSA+3DES:!MD5;
คุณสามารถตั้งค่า GZIP เป็นปิดและเพิ่มพร็อกซี \ _MAX \ _TEMP \ _File \ _SIZE 0; เพื่อหลีกเลี่ยง err \ _http2 \ _protocol_error nginx ข้อผิดพลาด
ขั้นตอนที่ 6: เปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดเป็น https
ตอนนี้เราควรบอก NGINX HTTP2 พร็อกซีว่าควรให้บริการเนื้อหาผ่าน HTTPS เฉพาะเมื่อเซิร์ฟเวอร์ได้รับคำขอ HTTP ในที่สุดการเพิกเฉยต่อบรรทัดที่แสดงความคิดเห็นไฟล์การกำหนดค่า Nginx ของคุณ /etc/nginx/sites-available/domain-name.com ควรมีลักษณะคล้ายกับสิ่งนี้: เซิร์ฟเวอร์ {ฟัง 443 SSL http2 default_server; ฟัง [::]: 443 SSL http2 default_server; root/var/www/html; index index.html index.htm index.nginx-debian.html; server_name example.com; ตำแหน่ง/{try_files $ uri $ uri/= 404 ; } ssl_certificate /etc/nginx/ssl/example.com.crt; ฟัง [::]: 80; server_name example.com; ส่งคืน 301 https: // $ server_name $ request_uri;} บันทึกไฟล์ /etc/nginx/sites-available/domain-name.com จากนั้นออก ตรวจสอบการกำหนดค่าสำหรับข้อผิดพลาดทางไวยากรณ์:
sudo nginx -t
ขั้นตอนที่ 7: รีสตาร์ท nginx
ในการใช้การเปลี่ยนแปลงทั้งหมดให้รีสตาร์ท NGINX HTTP2 Reverse Server และตรวจสอบสถานะการกำหนดค่า sudo systemctl รีสตาร์ท nginx สถานะ sudo systemctl nginx
บทสรุป:
ขอแสดงความยินดีคุณได้เรียนรู้วิธีการตั้งค่า NGINX Config HTTP2 Support สำเร็จบนเซิร์ฟเวอร์ Ubuntu การตั้งค่า Nginx HTTP2 ของคุณกำลังให้บริการหน้า HTTP/2 และยังล้างความแตกต่างระหว่างโปรโตคอล HTTP/1 และ HTTP/2 หากคุณยังต้องเผชิญกับปัญหาการกำหนดค่าใด ๆ โปรดแจ้งให้เราทราบในส่วนความคิดเห็น คุณมีคำถามใด ๆ เกี่ยวกับโปรโตคอลมัลติเพล็กซ์ HTTP2 หรือไม่ _, โปรด _ ติดต่อกลับ
สำรวจ
คุณอาจชอบบทความด้านล่าง: