Απαιτήσεις
Πριν ξεκινήσεις
Βήμα 1 - Εγκαταστήστε το Acme.sh και αποκτήστε ένα πιστοποιητικό TLS από το Let's Encrypt
Βήμα 2 – Εγκαταστήστε το Nginx από το επίσημο αποθετήριο Nginx
Βήμα 3 – Κατεβάστε και μεταγλωττίστε τον πηγαίο κώδικα του Brotli
Βήμα 4 – Διαμόρφωση Nginx
Ο 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 your_email@example.com
cd ~
source ~/.bashrc
Ελέγξτε την έκδοση.
acme.sh --version
# v2.8.0
Λάβετε πιστοποιητικά RSA και ECDSA για 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
Αφού εκτελέσετε τις παραπάνω εντολές, τα πιστοποιητικά και τα κλειδιά σας θα βρίσκονται στις ακόλουθες θέσεις:
- RSA:
/etc/letsencrypt/example.com
- ECC/ECDSA:
/etc/letsencrypt/example.com_ecc
Βήμα 2 – Εγκαταστήστε το Nginx από το επίσημο αποθετήριο Nginx
Κατεβάστε και εγκαταστήστε το πιο πρόσφατο mainline Nginx από το επίσημο αποθετήριο 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. Από την έκδοση 1.11.5 του Nginx είναι δυνατή η μεταγλώττιση μεμονωμένων δυναμικών μονάδων χωρίς τη μεταγλώττιση του πλήρους λογισμικού Nginx. Στα επόμενα βήματα, θα δημιουργήσουμε τη λειτουργική μονάδα Brotli ως δυναμική χωρίς να μεταγλωττίσουμε το πλήρες Nginx.
Κατεβάστε την πιο πρόσφατη έκδοση του κύριου πηγαίου κώδικα 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ως δυναμική λειτουργική μονάδα και αντιγράψτε το στον τυπικό κατάλογο για μονάδες Nginx, /etc/nginx/modules.
./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.soκαι ngx_http_brotli_static_module.so.
ls /etc/nginx/modules
Ορίστε δικαιώματα 644για όλα τα .soαρχεία.
sudo chmod 644 /etc/nginx/modules/*.so
Είμαστε έτοιμοι να διαμορφώσουμε την υποστήριξη 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 στον διακομιστή ιστού σας.