Как установить Nginx с поддержкой HTTP/2 на Ubuntu 18.04 LTS

12 set 2022 2 min di lettura
Как установить Nginx с поддержкой HTTP/2 на Ubuntu 18.04 LTS
Indice dei contenuti

Введение

Nginx — это быстрый и надежный веб-сервер с открытым исходным кодом. Он приобрел популярность благодаря низкому использованию памяти, высокой масштабируемости, простоте настройки и поддержке большинства различных протоколов.

Один из поддерживаемых протоколов — HTTP/2. Основным преимуществом HTTP/2 является высокая скорость передачи для веб-сайтов с большим содержанием.

HTTP/2 — это новая версия протокола передачи гипертекста, который используется в Интернете для доставки страниц с сервера в браузер. Протокол HTTP 1.1 ограничивает потенциальную скорость передачи для большинства современных веб-сайтов, поскольку он загружает части страницы в очередь, а для загрузки средней современной веб-страницы требуется около 100 запросов.

HTTP/2 решает эту проблему.

  • Все запросы загружаются параллельно, а не в очереди.
  • Заголовки HTTP сжаты.
  • Страницы передаются как бинарный файл, а не как текстовый файл.
  • Серверы могут «проталкивать» данные даже без запроса пользователя, что повышает скорость для пользователей с высокой задержкой.

Этот туториал поможет вам настроить быстрый и безопасный сервер Nginx с поддержкой HTTP/2.

Установите Nginx

Поддержка протокола HTTP/2 была введена в Nginx 1.9.5. К счастью, репозиторий по умолчанию в Ubuntu 18.04 LTS содержит более позднюю версию, поэтому вам не нужно добавлять сторонний репозиторий.

Во-первых, давайте обновим список пакетов, доступных в системе пакетов apt:

sudo apt update

Затем устанавливаем Nginx:

sudo apt install nginx

Мы можем проверить установленную версию Nginx:

sudo nginx -v

Настроить Nginx

Давайте откроем основной файл конфигурации Nginx и изменим HTTP-порт 80 на 443 HTTPS:

sudo nano /etc/nginx/sites-available/default

По умолчанию у вас должна быть такая конфигурация:


listen 80 default_server;
 listen [::]:80 default_server;

Давайте изменим это так:


listen 443 ssl http2 default_server;
 listen [::]:443 ssl http2 default_server;

Первая строка относится к соединениям IPv4, вторая строка относится к соединениям типа IPv6.

Давайте изменим name_server, введя наше доменное имя, например:


server_name esempio.com;

Сохраним и закроем файл.

Чтобы проверить, не допустили ли мы ошибок, из терминала:

sudo nginx -t

Если ошибок не было допущено, мы получим следующий вывод:


nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 nginx: configuration file /etc/nginx/nginx.conf test is successful

Устанавливаем SSL-сертификаты

Чтобы установить SSL-сертификаты, необходимые для использования протокола HTTPS и порта 443, я рекомендую прочитать следующее руководство: Установите Let’s Encrypt для Nginx в Ubuntu 18.04 LTS.

Следуя этому руководству, вы сможете бесплатно установить SSL-сертификаты с помощью Let's Encrypt.

Оптимизировать Nginx

HTTP/2 имеет огромный черный список старых и небезопасных шифров, поэтому нам нужно их избегать. Комплекты шифрования представляют собой набор криптографических алгоритмов, описывающих, как следует шифровать передаваемые данные.

Мы будем использовать очень популярный набор шифров, безопасность которого одобрена такими интернет-гигантами, как CloudFlare.

Откроем следующий файл конфигурации:

sudo nano /etc/nginx/nginx.conf

Мы добавляем следующие строки после ssl_prefer_server_ciphers on;


ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 ssl_session_cache shared:SSL:5m;
 ssl_session_timeout 1h;

ssl_session_cache указывает размер кеша, который будет содержать информацию о сеансе. ssl_session_timeout ограничивает время кэширования определенных сессий.

Мы также добавляем эту строку всегда в один и тот же файл nginx.conf:

add_header Strict-Transport-Security "max-age=15768000" always;

Этот заголовок должен защищать нас от атак с понижением версии протокола.

По умолчанию этот заголовок не добавляется в запросы субдоменов. Если у вас есть поддомены, вам нужно добавить переменную includeSubDomains в конец строки, например:


add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

Сохраните и закройте файл.

Давайте проверим, не допустили ли мы ошибок:

sudo nginx -t

Если мы не найдем никаких ошибок, мы можем перезапустить Nginx:

sudo service nginx restart

Установка Nginx с протоколом HTTP2 на Ubuntu 18.04 LTS завершена.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.