Поиск по сайту:

Как установить Nginx с Brotli Compression на Ubuntu 18.04 LTS


На этой странице

  1. Предпосылки
  2. Что будем делать?
  3. Шаг 1. Установка зависимостей сборки
  4. Шаг 2. Установите Nginx с помощью ngx_brotli
    1. Добавить репозиторий Nginx
    2. Загрузить исходные файлы Nginx и ngx_brotli.
    3. Сборка Nginx с поддержкой ngx_brotli
    4. Установите 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

    Что мы будем делать?

    1. Установка зависимостей сборки
    2. Установите Nginx с помощью ngx_brotli
      • Добавить репозиторий Nginx
      • Загрузить Nginx и ngx_brotli
      • Сборка Nginx с поддержкой ngx_brotli
      • Установите Nginx и включите поддержку ngx_brotli
    3. Настройка виртуального хоста Nginx
    4. Тестирование

    Шаг 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/