Tambah sokongan Brotli ke Nginx pada Ubuntu 18.04

Brotli (br) adalah algoritma pemampatan sumber terbuka baru, yang dibangunkan oleh Google sebagai alternatif kepada Gzip, Zopfli dan Deflate. Secara formal didefinisikan dalam Pasukan Petugas Kejuruteraan Internet (IETF) sebagai RFC 7932 . Kajian kes Google pada Brotli menunjukkan nisbah pemampatan hingga 26% lebih kecil daripada kaedah semasa, dengan penggunaan CPU lebih sedikit.

Nginx tidak mempunyai sokongan rasmi tetapi ada modul pihak ketiga yang dikembangkan oleh Google bernama ngx_brotli yang dapat kita gunakan untuk menambahkan sokongan ke Nginx.

Panduan ini akan menunjukkan kepada anda cara menambah sokongan Brotli untuk Nginx pada contoh Ubuntu 18.04 LTS Vultr yang baru.

NOTA: Panduan ini akan digunakan johndoesebagai contoh pengguna dan example.comsebagai domain contoh. Gantikan mereka mengikut nama anda.

Keperluan

  • Ubuntu 18.04 pelayan LTS
  • Versi Nginx 1.11.5 atau lebih tinggi
  • Nama domain dengan A/ AAAArekod disediakan
  • Sijil TLS

Sebelum awak bermula

Semak versi Ubuntu.

lsb_release -ds
# Ubuntu 18.04 LTS

Buat non-rootakaun pengguna baru dengan sudoakses dan beralih kepadanya.

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

NOTA : Gantikan johndoedengan nama pengguna anda .

Kemas kini perisian sistem operasi anda.

sudo apt update && sudo apt upgrade -y

Sediakan zon waktu.

sudo dpkg-reconfigure tzdata

Pasang alatan dan pakej binaan yang diperlukan.

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

Langkah 1 - Pasang Acme.sh dan dapatkan sijil TLS dari Let's Encrypt

Brotli menghendaki anda menyediakan dan menggunakan HTTPS. Di bahagian ini, kami akan mendapat sijil yang dipercayai daripada Let's Encrypt.

Muat turun dan pasang 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 your_email@example.com
cd ~
source ~/.bashrc

Semak versi.

acme.sh --version
# v2.8.0

Dapatkan sijil RSA dan ECDSA untuk example.com.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail your_email@example.com --ocsp-must-staple --keylength 2048

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

Setelah menjalankan perintah di atas, sijil dan kunci anda akan berada di lokasi berikut:

  • RSA: /etc/letsencrypt/example.com
  • ECC / ECDSA: /etc/letsencrypt/example.com_ecc

Langkah 2 - Pasang Nginx dari repositori Nginx rasmi

Muat turun dan pasang mainline Nginx terkini dari republik Nginx rasmi.

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

Semak versi.

sudo nginx -v
# nginx version: nginx/1.15.2

Dayakan dan mulailah Nginx.

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

Langkah 3 - Muat turun dan susun kod sumber Brotli

Selepas memasang Nginx, kita perlu membina modul Brotli ( ngx_brotli) sebagai modul Nginx dinamik. Dari versi Nginx 1.11.5 adalah mungkin untuk menyusun modul dinamik individu tanpa menyusun perisian Nginx yang lengkap. Dalam beberapa langkah seterusnya, kami akan membina modul Brotli sebagai dinamik tanpa menyusun Nginx yang lengkap.

Muat turun versi terkini kod sumber Nginx utama dan ekstraknya.

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

CATATAN : Sangat penting bahawa nombor versi pakej Nginx dan kod sumber Nginx sepadan. Sekiranya anda memasang Nginx 1.15.2 dari repositori Nginx rasmi, anda mesti memuat turun versi kod sumber yang sama , 1.15.2 dalam kes ini.

Keluarkan nginx-1.15.2.tar.gz.

rm nginx-1.15.2.tar.gz

Klon ngx_brotlidari GitHub.

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

Navigasi ke direktori kod sumber Nginx.

cd ~/nginx-1.15.2

Muat turun perpustakaan yang diperlukan.

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

Menyusun ngx_brotlisebagai modul dinamik dan menyalinnya ke direktori standard untuk modul Nginx, /etc/nginx/modules.

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

Senaraikan fail /etc/nginx/modulesdan anda akan melihat ngx_http_brotli_filter_module.sodan ngx_http_brotli_static_module.so.

ls /etc/nginx/modules

Tetapkan keizinan 644untuk semua .sofail.

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

Langkah 4 - Konfigurasikan Nginx

Kami bersedia untuk mengkonfigurasi sokongan Brotli di Nginx.

Jalankan sudo vim /etc/nginx/nginx.confdan tambah dua arahan berikut di bahagian atas fail untuk memuatkan modul Brotli baru.

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

Uji konfigurasi.

sudo nginx -t

Buat direktori root dokumen example.comdan buat index.htmldengan beberapa kandungan di dalamnya.

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

Buat tuan rumah maya untuk example.com.

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

Populasi dengan konfigurasi berikut.

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

Uji konfigurasi.

sudo nginx -t

Muat semula Nginx.

sudo systemctl reload nginx.service

Lawati laman web anda di penyemak imbas web anda dan buka tab rangkaian alat pembangun. Anda akan melihat Content-Encoding: brpada tajuk respons. Itulah petunjuk bahawa pemampatan Brotli berfungsi.

Tambah sokongan Brotli ke Nginx pada Ubuntu 18.04

Tambah sokongan Brotli ke Nginx pada Ubuntu 18.04

Anda telah mengaktifkan pemampatan Brotli di pelayan web anda.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut