เพิ่มการสนับสนุน Brotli ให้กับ Nginx บน Ubuntu 18.04

Brotli (br)เป็นอัลกอริธึมการบีบอัดโอเพนซอร์สใหม่ที่พัฒนาโดย Google เป็นทางเลือกสำหรับ Gzip, Zopfli และ Deflate มันถูกกำหนดอย่างเป็นทางการใน Internet Engineering Task Force (IETF) เป็นRFC 7932 กรณีศึกษาของ Google เกี่ยวกับ Brotli แสดงอัตราส่วนการบีบอัดที่เล็กกว่าวิธีการปัจจุบันถึง 26% โดยมีการใช้งาน CPU น้อยกว่า

Nginx ไม่มีการสนับสนุนอย่างเป็นทางการ แต่มีโมดูลของบุคคลที่สามที่พัฒนาโดย Google ชื่อngx_brotliซึ่งเราสามารถใช้เพื่อเพิ่มการสนับสนุนให้ Nginx

คู่มือนี้จะแสดงวิธีการเพิ่มการสนับสนุน Brotli ให้กับ Nginx บนอินสแตนซ์ Ubuntu 18.04 LTS Vultr ที่สดใหม่

หมายเหตุ: คำแนะนำนี้จะใช้johndoeเป็นผู้ใช้ตัวอย่างและexample.comเป็นโดเมนตัวอย่าง แทนที่พวกเขาตามชื่อของคุณ

ความต้องการ

  • เซิร์ฟเวอร์ Ubuntu 18.04 LTS
  • รุ่น Nginx 1.11.5 หรือสูงกว่า
  • ชื่อโดเมนที่มีA/ AAAAบันทึกการตั้งค่า
  • ใบรับรอง TLS

ก่อนที่จะเริ่ม

ตรวจสอบเวอร์ชั่นของ Ubuntu

lsb_release -ds
# Ubuntu 18.04 LTS

สร้างnon-rootบัญชีผู้ใช้ใหม่ด้วยsudoการเข้าถึงและเปลี่ยนเป็นบัญชี

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

หมายเหตุ : แทนที่johndoeด้วยชื่อผู้ใช้ของคุณ

อัปเดตซอฟต์แวร์ของระบบปฏิบัติการของคุณ

sudo apt update && sudo apt upgrade -y

ตั้งค่าเขตเวลา

sudo dpkg-reconfigure tzdata

ติดตั้งเครื่องมือและแพ็คเกจการสร้างที่จำเป็น

sudo apt install -y build-essential git apt-transport-https socat

ขั้นตอนที่ 1 - ติดตั้ง Acme.sh และรับใบรับรอง TLS จาก Let's Encrypt

Brotli ต้องการให้คุณตั้งค่าและใช้ HTTPS ในส่วนนี้เราจะได้รับใบรับรองที่เชื่อถือได้จาก Let's Encrypt

ดาวน์โหลดและติดตั้ง Acme.sh

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc

ตรวจสอบเวอร์ชั่น

acme.sh --version
# v2.8.0

ได้รับอาร์เอสและ ECDSA example.comใบรับรองสำหรับ

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength 2048

# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength ec-256

หลังจากเรียกใช้คำสั่งด้านบนใบรับรองและคีย์ของคุณจะอยู่ในตำแหน่งต่อไปนี้:

  • อาร์เอส: /etc/letsencrypt/example.com
  • ECC / ECDSA: /etc/letsencrypt/example.com_ecc

ขั้นตอนที่ 2 - ติดตั้ง Nginx จากที่เก็บ Nginx อย่างเป็นทางการ

ดาวน์โหลดและติดตั้ง Nginx mainline ล่าสุดจาก repo Nginx อย่างเป็นทางการ

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt

ตรวจสอบเวอร์ชั่น

sudo nginx -v
# nginx version: nginx/1.15.2

เปิดใช้งานและเริ่ม Nginx

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

ขั้นตอนที่ 3 - ดาวน์โหลดและรวบรวมซอร์สโค้ด Brotli

หลังจากติดตั้ง Nginx เราจำเป็นต้องสร้างโมดูล Brotli ( ngx_brotli) เป็นโมดูล Nginx แบบไดนามิก จาก Nginx เวอร์ชัน 1.11.5 เป็นไปได้ที่จะรวบรวมโมดูลไดนามิกแต่ละตัวโดยไม่ต้องรวบรวมซอฟต์แวร์ Nginx ที่สมบูรณ์ ในไม่กี่ขั้นตอนถัดไปเราจะสร้างโมดูล Brotli เป็นแบบไดนามิกโดยไม่ต้องรวบรวม Nginx ที่สมบูรณ์

ดาวน์โหลดเวอร์ชันล่าสุดของซอร์สโค้ด mainline Nginx และแตกไฟล์

wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz

หมายเหตุ : มันเป็นสิ่งสำคัญมากที่หมายเลขเวอร์ชันของแพคเกจ Nginx และซอร์สโค้ด Nginx ตรงกัน หากคุณติดตั้ง Nginx 1.15.2 จากที่เก็บ Nginx อย่างเป็นทางการคุณต้องดาวน์โหลดซอร์สโค้ดรุ่นเดียวกันคือ 1.15.2 ในกรณีนี้

nginx-1.15.2.tar.gzลบ

rm nginx-1.15.2.tar.gz

โคลนngx_brotliจาก GitHub

git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~

นำทางไปยังไดเรกทอรีซอร์สโค้ด Nginx

cd ~/nginx-1.15.2

ดาวน์โหลดไลบรารีที่จำเป็น

sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev

รวบรวมngx_brotliเป็นโมดูลแบบไดนามิกและคัดลอกไปยังไดเรกทอรีมาตรฐานสำหรับโมดูล /etc/nginx/modulesNginx,

./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules

รายการไฟล์ใน/etc/nginx/modulesและคุณจะเห็นและngx_http_brotli_filter_module.songx_http_brotli_static_module.so

ls /etc/nginx/modules

ตั้งค่าการอนุญาต644สำหรับ.soไฟล์ทั้งหมด

sudo chmod 644 /etc/nginx/modules/*.so

ขั้นตอนที่ 4 - กำหนดค่า Nginx

เราพร้อมที่จะกำหนดค่าการสนับสนุน Brotli ใน Nginx

เรียกใช้sudo vim /etc/nginx/nginx.confและเพิ่มสองคำสั่งต่อไปนี้ที่ด้านบนของไฟล์เพื่อโหลดโมดูล Brotli ใหม่

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

ทดสอบการกำหนดค่า

sudo nginx -t

สร้างไดเรกทอรีรากของเอกสารexample.comและสร้างindex.htmlด้วยเนื้อหาบางส่วนในนั้น

sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit

example.comสร้างโฮสต์เสมือนจริงสำหรับ

sudo vim /etc/nginx/conf.d/example.com.conf

เติมด้วยการกำหนดค่าต่อไปนี้

server {
  listen 80;
  server_name example.com; # Replace with your domain name
  return 301 https://$server_name$request_uri;
}

server {    
  listen 443 ssl http2;
  server_name example.com; # Replace with your domain name

  root /var/www/example.com; # Replace with your document root

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  brotli on;
  brotli_static on;
  brotli_types text/plain text/css text/javascript application/javascript text/xml application/xml image/svg+xml application/json;
}

ทดสอบการกำหนดค่า

sudo nginx -t

โหลดซ้ำ Nginx

sudo systemctl reload nginx.service

เยี่ยมชมเว็บไซต์ของคุณในเว็บเบราว์เซอร์และเปิดแท็บเครือข่ายของเครื่องมือสำหรับนักพัฒนา คุณจะเห็นContent-Encoding: brในส่วนหัวการตอบสนอง นั่นคือตัวบ่งชี้ที่การบีบอัด Brotli ทำงาน

เพิ่มการสนับสนุน Brotli ให้กับ Nginx บน Ubuntu 18.04

เพิ่มการสนับสนุน Brotli ให้กับ Nginx บน Ubuntu 18.04

คุณเปิดใช้งานการบีบอัด Brotli บนเว็บเซิร์ฟเวอร์ของคุณ



Leave a Comment

ตั้งค่า NFS Share บน Debian

ตั้งค่า NFS Share บน Debian

NFS เป็นระบบไฟล์บนเครือข่ายที่อนุญาตให้คอมพิวเตอร์เข้าถึงไฟล์ผ่านเครือข่ายคอมพิวเตอร์ คู่มือนี้จะอธิบายวิธีการเปิดเผยโฟลเดอร์ผ่าน NF

วิธีการติดตั้ง Directus 6.4 CMS บน Fedora 26 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน Fedora 26 LAMP VPS

ใช้ระบบที่แตกต่างกันอย่างไร Directus 6.4 CMS เป็นระบบการจัดการเนื้อหาแบบไม่มีหัว (Headless Content Management: CMS) ที่ทรงพลังและยืดหยุ่นซึ่งให้ผู้พัฒนา

ติดตั้งเซิร์ฟเวอร์ TeamTalk บน Linux

ติดตั้งเซิร์ฟเวอร์ TeamTalk บน Linux

TeamTalk เป็นระบบการประชุมที่ช่วยให้ผู้ใช้สามารถสนทนาด้วยเสียง / วิดีโอคุณภาพสูงสนทนาผ่านข้อความถ่ายโอนไฟล์และแชร์หน้าจอ มันฉัน

การติดตั้ง Pagekit CMS บน CentOS 7

การติดตั้ง Pagekit CMS บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า

วิธีการติดตั้ง Sphinx Search Engine บน CentOS 7

วิธีการติดตั้ง Sphinx Search Engine บน CentOS 7

สฟิงซ์เป็นเครื่องมือค้นหาข้อความแบบโอเพนซอร์ซฟรีและโอเพนซอร์สซึ่งสามารถรวมเข้ากับเว็บแอปพลิเคชั่นต่าง ๆ เพื่อให้ได้คุณภาพที���รวดเร็วและสูง

การใช้คีย์ SSH ของคุณเพื่อเข้าสู่ผู้ใช้ที่ไม่ใช่รูท

การใช้คีย์ SSH ของคุณเพื่อเข้าสู่ผู้ใช้ที่ไม่ใช่รูท

Vultr มีคุณสมบัติที่อนุญาตให้คุณติดตั้งคีย์ SSH ล่วงหน้าเมื่อสร้างอินสแตนซ์ใหม่ สิ่งนี้อนุญาตให้คุณเข้าถึงผู้ใช้รูทเซิร์ฟเวอร์อย่างไรก็ตาม

สร้างเครือข่ายสังคมด้วย Diaspora บน Debian 9

สร้างเครือข่ายสังคมด้วย Diaspora บน Debian 9

ใช้ระบบที่แตกต่างกันอย่างไร Diaspora เป็นเครือข่ายโซเชียลที่ตระหนักถึงความเป็นส่วนตัวและเป็นโอเพ่นซอร์ส ในบทช่วยสอนนี้คุณจะได้เรียนรู้วิธีการตั้งค่าและกำหนดค่า po Diaspora

การติดตั้ง Fuel CMS บน Debian 9

การติดตั้ง Fuel CMS บน Debian 9

ใช้ระบบที่แตกต่างกันอย่างไร Fuel CMS เป็นระบบจัดการเนื้อหาที่ใช้ CodeIgniter ซอร์สโค้ดของมันถูกโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า

วิธีการติดตั้ง Snipe-IT บน Ubuntu 16.10

วิธีการติดตั้ง Snipe-IT บน Ubuntu 16.10

ใช้ระบบที่แตกต่างกันอย่างไร Snipe-IT เป็นเว็บแอปพลิเคชั่นฟรีและโอเพนซอร์สสำหรับการจัดการสินทรัพย์ด้านไอที มันถูกเขียนบนกรอบงาน Laravel 5.2 และการใช้งาน

วิธีการติดตั้งเครื่องมือจัดการโครงการไทก้าบน Ubuntu 16.04

วิธีการติดตั้งเครื่องมือจัดการโครงการไทก้าบน Ubuntu 16.04

ใช้ระบบที่แตกต่างกันอย่างไร ไทกะเป็นแอปพลิเคชั่นฟรีและโอเพ่นซอร์สสำหรับการจัดการโครงการ ซึ่งแตกต่างจากเครื่องมือการจัดการโครงการอื่น ๆ ไทก้าใช้ส่วนเพิ่ม

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

วิธีการที่ปลอดภัย vsFTPd ด้วย SSL / TLS

FTP ที่ปลอดภัยมากหรือเพียงแค่ vsFTPd เป็นซอฟต์แวร์น้ำหนักเบาที่มีความสามารถในการปรับแต่ง ในบทช่วยสอนนี้เราจะรักษาความปลอดภัยของข้อความ

วิธีการติดตั้ง GCC บน CentOS 6

วิธีการติดตั้ง GCC บน CentOS 6

CentOS ติดตามการพัฒนา Red Hat Enterprise Linux (RHEL) RHEL พยายามที่จะเป็นแพลตฟอร์มเซิร์ฟเวอร์ที่มั่นคงซึ่งหมายความว่าจะไม่รีบเร่งในการรวม

วิธีการติดตั้ง Ranger Terminal File Manager บน Linux

วิธีการติดตั้ง Ranger Terminal File Manager บน Linux

Ranger เป็นตัวจัดการไฟล์แบบบรรทัดคำสั่งที่มีการเชื่อมโยงคีย์ VI มันจัดเตรียมอินเตอร์เฟส curses ที่เรียบง่ายและดีพร้อมมุมมองบนลำดับชั้นไดเร็กทอรี

วิธีการสร้าง Brotli จากซอร์สบน Ubuntu 18.04 LTS

วิธีการสร้าง Brotli จากซอร์สบน Ubuntu 18.04 LTS

ใช้ระบบที่แตกต่างกันอย่างไร Brotli เป็นวิธีการบีบอัดแบบใหม่ที่มีอัตราการบีบอัดที่ดีกว่า GZIP ซอร์สโค้ดของมันถูกโฮสต์แบบสาธารณะบน Githu นี้

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ตั้งค่าบัญชีผู้ใช้ SFTP เท่านั้นบน CentOS 7

ในบางโอกาสผู้ดูแลระบบอาจต้องสร้างบัญชีผู้ใช้และ จำกัด การเข้าถึงเพื่อจัดการไฟล์ของตัวเองผ่าน sFTP เท่านั้น

วิธีการติดตั้ง Omeka Classic 2.4 CMS บน Ubuntu 16.04 LAMP VPS

วิธีการติดตั้ง Omeka Classic 2.4 CMS บน Ubuntu 16.04 LAMP VPS

ใช้ระบบที่แตกต่างกันอย่างไร Omeka Classic 2.4 CMS เป็นแพลตฟอร์มเผยแพร่ดิจิตอลฟรีและโอเพ่นซอร์สและระบบการจัดการเนื้อหา (CMS) สำหรับการแบ่งปันดิจิต้า

ปิดใช้งานหรือ จำกัด การล็อกอินรูทผ่าน SSH บน Linux

ปิดใช้งานหรือ จำกัด การล็อกอินรูทผ่าน SSH บน Linux

การอนุญาตให้ล็อกอินรูทผ่าน SSH นั้นถือว่าเป็นการปฏิบัติด้านความปลอดภัยที่ไม่ดีทั่วทั้งอุตสาหกรรมเทคโนโลยี คุณสามารถดำเนินการที่ละเอียดอ่อนแทน

วิธีการติดตั้ง Moodle บน CentOS 7

วิธีการติดตั้ง Moodle บน CentOS 7

ใช้ระบบที่แตกต่างกันอย่างไร Moodle เป็นแพลตฟอร์มการเรียนรู้โอเพนซอร์ซหรือระบบจัดการหลักสูตร (CMS) - ชุดซอฟต์แวร์โอเพ่นซอร์สฟรีที่ออกแบบมาเพื่อช่วย

วิธีการติดตั้ง RabbitMQ บน Ubuntu 16.04

วิธีการติดตั้ง RabbitMQ บน Ubuntu 16.04

ใช้ระบบที่แตกต่างกันอย่างไร RabbitMQ เป็นนายหน้าข้อความโอเพ่นซอร์สที่ใช้กันอย่างแพร่หลายเขียนในภาษาการเขียนโปรแกรม Erlang เป็นมิดเดิลแวร์ที่มุ่งเน้นข้อความ

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ติดตั้ง NGINX พร้อม ModSecurity บน CentOS 6

ในบทความนี้ฉันจะอธิบายวิธีสร้าง LEMP สแต็คที่ได้รับการป้องกันโดย ModSecurity ModSecurity เป็นไฟร์วอลล์เว็บแอพพลิเคชันแบบโอเพนซอร์สที่มีประโยชน์

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true