Додайте підтримку Brotli в Nginx в Ubuntu 18.04

Brotli (br) — це новий алгоритм стиснення з відкритим кодом, розроблений Google як альтернатива Gzip, Zopfli і Deflate. Формально він визначений в Internet Engineering Task Force (IETF) як RFC 7932 . Дослідження Google щодо Brotli показало, що коефіцієнт стиснення на 26% менший, ніж поточні методи, при меншому використанні ЦП.

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

Завантажте та встановіть найновіший основний 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. З версії Nginx 1.11.5 можна компілювати окремі динамічні модулі без компіляції повного програмного забезпечення 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

Крок 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 на своєму веб-сервері.

Залишити коментар

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше