Как установить Nginx с Brotli Compression на Ubuntu 18.04 LTS
На этой странице
- Предпосылки
- Что будем делать?
- Шаг 1. Установка зависимостей сборки
- Шаг 2. Установите Nginx с помощью ngx_brotli
- Добавить репозиторий Nginx
- Загрузить исходные файлы Nginx и ngx_brotli.
- Сборка Nginx с поддержкой ngx_brotli
- Установите Nginx и включите поддержку Brotli
Nginx (engine-x) — это высокопроизводительный HTTP-сервер с открытым исходным кодом, обратный прокси-сервер и прокси-сервер IMAP/POP3. Выдающимися особенностями Nginx являются стабильность, богатый набор функций, простая настройка и низкое потребление памяти.
Brotli — это алгоритм сжатия с открытым исходным кодом, созданный Google. Brotli обеспечивает лучшее сжатие без потерь, чем gzip, и теперь поддерживается основными браузерами и веб-серверами.
Подробнее о производительности Brotli:
- Запись в блоге Akamai.
- Публикация Cloudflare о Brotli.
- Запись в блоге Mozilla.
В этом руководстве я пошагово покажу вам, как добавить поддержку алгоритма сжатия Brotli на веб-сервере Nginx. Мы создадим собственный пакет nginx, поддерживающий алгоритм сжатия brotli. Мы будем использовать последнюю версию Ubuntu, а также создадим пакет nginx для операционной системы Debian.
Предпосылки
- Убунту 18.04
- Привилегии root
Что мы будем делать?
- Установка зависимостей сборки
- Установите Nginx с помощью ngx_brotli
- Добавить репозиторий Nginx
- Загрузить Nginx и ngx_brotli
- Сборка Nginx с поддержкой ngx_brotli
- Установите Nginx и включите поддержку ngx_brotli
- Настройка виртуального хоста Nginx
- Тестирование
Шаг 1 — Установите зависимости сборки
Первое, что нам нужно для этого руководства, — это установить зависимости сборки в систему.
Обновите репозиторий Ubuntu, а затем установите все зависимости сборки пакетов, используя приведенную ниже команду apt.
sudo apt update
sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzipДождитесь установки всех пакетов.
Шаг 2 — Установите Nginx с ngx_brotli
На этом этапе мы установим собственный пакет nginx, который поддерживает алгоритм сжатия brotli в системе Ubuntu. И мы будем использовать последнюю стабильную версию пакета nginx, которую можно загрузить из официального репозитория nginx.
Добавить репозиторий Nginx
Перед добавлением репозитория nginx добавьте знак ключа nginx с помощью приведенной ниже команды.
curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Теперь создайте новый файл репозитория nginx nginx.list в каталоге /etc/apt/sources.list.d с помощью редактора vim.
vim /etc/apt/sources.list.d/nginx.list
Вставьте конфигурацию ниже.
deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx
Сохранить и выйти.
Теперь обновите репозитории Ubuntu.
sudo apt-get update
Добавлен репозиторий Nginx.
Загрузите исходные файлы Nginx и ngx_brotli
Теперь мы загрузим пакеты Nginx из репозитория nginx с помощью команды apt.
Перейдите в каталог /usr/local/src и загрузите исходный код Nginx с помощью приведенной ниже команды apt.
cd /usr/local/src
sudo apt source nginxТеперь установите все необходимые зависимости пакетов для nginx.
sudo apt build-dep nginx -y
И после завершения установки клонируйте исходный код ngx_brotli с GitHub.
git clone --recursive https://github.com/google/ngx_brotli.git
Nginx и ngx_brotli загружены.
Сборка Nginx с поддержкой ngx_brotli
Теперь нам нужно отредактировать правило сборки Nginx по умолчанию, нам нужно добавить ngx_brotli в правило сборки пакетов.
Перейдите в каталог /usr/local/src/nginx-* и отредактируйте конфигурацию правил debian.
cd /usr/local/src/nginx-*/
vim debian/rulesТеперь вы получите две среды сборки для config.env.nginx и config.env.nginx_debug. Добавьте параметр --add-module= для ngx_brotli в обе встроенные среды.
--add-module=/usr/local/src/ngx_brotli
Сохранить и выйти.
И были готовы скомпилировать и собрать пакет nginx с поддержкой ngx_brotli.
Запустите команду dpkg ниже.
sudo dpkg-buildpackage -b -uc -us
Примечание:
- -b: Сборка только двоичного кода, без исходных файлов.
- -uc : Неподписанный файл .buildinfo и .changes.
- -us: неподписанный исходный пакет.
Когда сборка будет завершена, вы получите пакеты nginx-*.deb в каталоге /usr/local/src, как показано ниже.
ls -lah
Установите Nginx и включите поддержку Brotli
Сборка nginx с ngx_brotli завершена, установите пакеты nginx-*.deb с помощью приведенной ниже команды dpkg.
cd /usr/local/src/
sudo dpkg -i *.debУстановлен Nginx с поддержкой ngx_brotli.
Теперь перейдите в каталог конфигурации /etc/nginx и отредактируйте файл конфигурации nginx.conf.
cd /etc/nginx/
vim nginx.confВключите ngx_brotli на nginx, добавив приведенную ниже конфигурацию в раздел http {...}.
brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;
Сохранить и выйти.
Протестируйте конфигурацию nginx и убедитесь в отсутствии ошибок.
nginx -t
Включена поддержка сжатия brotli.
Шаг 3 — Настройте виртуальный хост Nginx
На этом этапе мы попытаемся создать новый виртуальный хост для доменного имени nginx.hakase-labs.io.
Примечание:
- Сжатие Brotli поддерживает только сайт HTTPS, поэтому убедитесь, что у вас есть файлы сертификатов для вашего доменного имени, или вы можете создать бесплатные SSL-сертификаты Letsencrypt.
Перейдите в каталог конфигурации /etc/nginx и создайте новую конфигурацию виртуального хоста brotli.conf.
cd /etc/nginx/
vim conf.d/brotli.confВставьте туда следующую конфигурацию виртуального хоста nginx.
# Redirect HTTP to HTTPS Nginx
server { listen 80; server_name nginx.hakase-labs.io; return 301 https://$host$request_uri; } # SSL configuration server { listen 443 ssl http2; server_name nginx.hakase-labs.io;
ssl_certificate /etc/letsencrypt/live/nginx.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx.hakase-labs.io/privkey.pem; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Enable server-side protection against BEAST attacks ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # Disable SSLv3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# web root directory location / { root /usr/share/nginx/html; } }Сохранить и выйти.
Примечание:
- Измените имя домена на свой собственный домен.
- Измените путь сертификатов SSL.
Теперь проверьте конфигурацию nginx и убедитесь, что ошибок нет, затем перезапустите службу.
nginx -t
systemctl restart nginxДобавлен новый виртуальный хост nginx.
Шаг 4 — Тестирование
Откройте веб-браузер и введите доменное имя, мое:
http://nginx.hakase-labs.io
Теперь вы будете перенаправлены на соединение https. Щелкните правой кнопкой мыши страницу и выберите «Проверить элемент». Перейдите на вкладку «Сеть» и перезагрузите страницу.
Нажмите на детали запросов, и вы получите все заголовки запросов и ответов с веб-сервера, как показано ниже.
В разделе заголовков ответа вы увидите кодировку содержимого: br для поддержки brotli.
Теперь, если вам нужен еще один тест, вы можете использовать команду curl, как показано ниже.
curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io
И вы увидите результат content-encoding: br для поддержки brotli.
Установка Nginx с поддержкой сжатия Brotli на Ubuntu 18.04 успешно завершена.
использованная литература
- https://www.babak.io/blog/