Követelmények
Mielőtt elkezded
1. lépés – Telepítse az Acme.sh-t, és szerezzen be TLS-tanúsítványt a Let's Encrypt-től
2. lépés – Telepítse az Nginx-et a hivatalos Nginx tárolóból
3. lépés – Töltse le és fordítsa le a Brotli forráskódot
4. lépés – Az Nginx konfigurálása
A Brotli (br) egy új nyílt forráskódú tömörítési algoritmus, amelyet a Google fejlesztett ki a Gzip, Zopfli és Deflate alternatívájaként. Az Internet Engineering Task Force (IETF) hivatalosan RFC 7932- ként határozza meg . A Google Brotli esettanulmánya szerint a tömörítési arány akár 26%-kal is kisebb a jelenlegi módszereknél, kevesebb processzorhasználat mellett.
Az Nginx nem rendelkezik hivatalos támogatással, de van egy harmadik féltől származó, a Google által kifejlesztett ngx_brotli modul, amelyet az Nginx támogatására használhatunk.
Ez az útmutató megmutatja, hogyan adhat hozzá Brotli támogatást az Nginxhez egy friss Ubuntu 18.04 LTS Vultr példányon.
MEGJEGYZÉS: Ez az útmutató johndoepéldafelhasználóként és example.compéldadomainként is szolgál. Cserélje ki őket a nevek szerint.
Követelmények
- Ubuntu 18.04 LTS szerver
- Nginx 1.11.5 vagy újabb verzió
- Domain név a
A/ AAAArekordokkal beállítva
- TLS tanúsítvány
Mielőtt elkezded
Ellenőrizze az Ubuntu verziót.
lsb_release -ds
# Ubuntu 18.04 LTS
Hozzon létre egy új non-rootfelhasználói fiókot sudohozzáféréssel, és váltson rá.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
MEGJEGYZÉS : Cserélje johndoeki a felhasználónevével .
Frissítse operációs rendszere szoftverét.
sudo apt update && sudo apt upgrade -y
Állítsa be az időzónát.
sudo dpkg-reconfigure tzdata
Telepítse a szükséges összeállítási eszközöket és csomagokat.
sudo apt install -y build-essential git apt-transport-https socat
1. lépés – Telepítse az Acme.sh-t, és szerezzen be TLS-tanúsítványt a Let's Encrypt-től
A Brotli megköveteli a HTTPS beállítását és használatát. Ebben a részben egy megbízható tanúsítványt kapunk a Let's Encrypt-től.
Töltse le és telepítse az Acme.sh-t.
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
Ellenőrizze a verziót.
acme.sh --version
# v2.8.0
Szerezzen be RSA és ECDSA tanúsítványt a következőhöz: 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
A fenti parancsok futtatása után a tanúsítványok és kulcsok a következő helyeken lesznek:
- RSA:
/etc/letsencrypt/example.com
- ECC/ECDSA:
/etc/letsencrypt/example.com_ecc
2. lépés – Telepítse az Nginx-et a hivatalos Nginx tárolóból
Töltse le és telepítse a legújabb Nginx fővonalat a hivatalos Nginx tárhelyről.
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
Ellenőrizze a verziót.
sudo nginx -v
# nginx version: nginx/1.15.2
Engedélyezze és indítsa el az Nginxet.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
3. lépés – Töltse le és fordítsa le a Brotli forráskódot
Az Nginx telepítése után a Brotli modult ( ngx_brotli) dinamikus Nginx modulként kell létrehoznunk. Az Nginx 1.11.5-ös verziójától kezdve lehetséges az egyes dinamikus modulok összeállítása a teljes Nginx szoftver lefordítása nélkül. A következő néhány lépésben a Brotli modult dinamikusan építjük fel, a teljes Nginx fordítása nélkül.
Töltse le a fő Nginx forráskód legújabb verzióját, és bontsa ki.
wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz
MEGJEGYZÉS : Nagyon fontos, hogy az Nginx csomag és az Nginx forráskód verziószáma megegyezzen. Ha az Nginx 1.15.2-t a hivatalos Nginx-tárolóból telepítette, akkor a forráskód ugyanazt a verzióját kell letöltenie , ebben az esetben az 1.15.2-t.
Távolítsa el nginx-1.15.2.tar.gz.
rm nginx-1.15.2.tar.gz
Klón ngx_brotlia GitHubból.
git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~
Keresse meg az Nginx forráskód könyvtárát.
cd ~/nginx-1.15.2
Töltse le a szükséges könyvtárakat.
sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
Fordítsa le ngx_brotlidinamikus modulként, és másolja az Nginx modulok szabványos könyvtárába, /etc/nginx/modules.
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules
Listázza ki a fájlokat, /etc/nginx/modulesés látni fogja a ngx_http_brotli_filter_module.soés ngx_http_brotli_static_module.so.
ls /etc/nginx/modules
Állítsa be az engedélyeket 644az összes .sofájlhoz.
sudo chmod 644 /etc/nginx/modules/*.so
Készen állunk a Brotli támogatás konfigurálására az Nginxben.
Futtassa sudo vim /etc/nginx/nginx.confés adja hozzá a következő két direktívát a fájl tetejéhez az új Brotli modulok betöltéséhez.
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Tesztelje a konfigurációt.
sudo nginx -t
Hozzon létre egy dokumentum gyökérkönyvtárát, example.comés hozzon létre index.htmlbenne tartalommal.
sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit
Hozzon létre egy virtuális gazdagépet a számára example.com.
sudo vim /etc/nginx/conf.d/example.com.conf
Töltse ki a következő konfigurációval.
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;
}
Tesztelje a konfigurációt.
sudo nginx -t
Töltse újra az Nginxet.
sudo systemctl reload nginx.service
Keresse fel webhelyét webböngészőjében, és nyissa meg a fejlesztői eszközök hálózat lapját. A Content-Encoding: brválaszfejlécekben látni fogod . Ez azt jelzi, hogy a Brotli tömörítés működik.

![Adja hozzá a Brotli támogatást az Nginxhez az Ubuntu 18.04-en Adja hozzá a Brotli támogatást az Nginxhez az Ubuntu 18.04-en]()
Engedélyezte a Brotli tömörítést a webszerverén.