Black Friday! Получите до 9 месяцев Хостинга в подарок!

Подробнее

Настройка поддержки HTTP / 2 Nginx в Ubuntu 20

post thumbnail

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

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

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

Помимо ускорения загрузки страниц сайта, переход на протокол HTTP/2 также повысит и безопасность передачи данных между сервером и посетителями, поскольку во всех современных браузерах обязательным условием поддержки протокола HTTP/2 является шифрование соединений между клиентом и сервером (сайт должен работать по HTTPS, то есть иметь установленный SSL сертификат).

Процесс перехода на HTTP/2

У вас есть сервер Ubuntu 20.04 или 22.04 с root-доступом и установленным Nginx.

Доменное имя, для которого настраиваем работу по HTTP/2, должно быть направлено на ваш сервер. Зарегистрировать новый доменперевести существующий к нам на обслуживание или направить домен у вашего регистратора по A-записи на ваш сервер.

Также для этого домена на сервер необходимо установить SSL сертификат: это может быть бесплатный Let’s Encrypt или вы можете выбрать и приобрести один из платных сертификатов (работу production’a на самоподписном сертификате не рассматриваем).

Также для корректной работы сайта по HTTP/2 необходимо настроить перенаправление трафика с 80 на 443 порт (автоматическое перенаправление запросов с HTTP на HTTPS протокол).

Подключение поддержки HTTP/2

В случае, если во время установки Nginx вы выполнили настройки блока server, то задаем следующие параметры для использования HTTP/2 вашим доменом. Первым делом внесем в конфигурационный файл настройки, непосредственно отвечающие за HTTP/2.

Откроем конфигурационный файл, настраиваемого домена:

vim /etc/nginx/sites-available/ваш_домен

Далее подключим HTTP/2 для IPv6 соединений и IPv4 подключений в секции listen для порта 443:

listen [::]:443 ssl http2 ipv6only=on;

listen 443 ssl http2;

после чего сохраните изменения.
После внесения корректив необходимо проводить проверку на отсутствие синтаксических ошибок:

nginx -t

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

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

nginx: configuration file /etc/nginx/nginx.conf test is successful

Ограничим использование небезопасных шифров на сервере.Шифр (Cipher Suites) — алгоритмы выполнения криптографических функций для шифрования передачи данных.

На следующем шаге проведем очистку неактуальных и небезопасных шифров, например, исключим использование шифрования MD5, которое считается небезопасным.

Открываем необходимый конфигурационный файл:

vim /etc/nginx/sites-available/ваш_домен

Приводим опцию ssl_ciphers к следующему виду:

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Сохраняем внесенные изменения и выходим.
И ещё раз проверяем, что не допустили синтаксических ошибок.

nginx -t

Перезагружаем веб-сервер после внесенных настроек.

systemctl restart nginx.service

Проверка корректной работы HTTP/2

Начнем с самого простого метода проверка в консоли при помощи curl. Выполняем запрос

curl -I -L https://ваш_домен

и получаем примерно следующий вывод:

HTTP/2 200 

server: nginx/1.14.0 (Ubuntu)

date: Mon, 15 Jun 2020 20:28:01 GMT

content-type: text/html

content-length: 240

last-modified: Fri, 12 Jun 2020 10:50:34 GMT

etag: "5ee35dfa-f0"

accept-ranges: bytes 

Также, можно выполнить проверку при помощи Google Chrome: Настройки управления — Инструменты разработчика (или кликаем F12), переходим на вкладку Network, правой кнопкой кликаем по заголовку таблицы и выбираем опцию Protocol. В случае, если все настроено правильно, в новом столбике отобразится значение h2 (сокращение от HTTP/2)

Проверка корректной работы HTTP/2 с помощью Google Chrome | Wiki HostPro

В итоге, контент будет обслуживаться сервером по защищенному протоколу HTTP/2.

У нас уже есть настроенный редирект с HTTP на HTTPS. Добавим также заголовок HTTP Strict Transport Security, дабы исключить приоритет этих перенаправлений. Таким образом, если браузер обнаружит HSTS-заголовок, он не станет подключаться через HTTP. Обмен данными будет происходить исключительно по защищенному соединению HTTPS.

Откроем конфигурационный файл:

vim /etc/nginx/nginx.conf

В конфигурационном файле Nginx в текстовом редакторе прописываем:

http {

...

##

# Virtual Host Configs

##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
add_header Strict-Transport-Security "max-age=15768000" always;
}
...

Значение max age устанавливаем в секундах.

Данное правило применимо для основных доменов. В случае, если необходимо расширить заголовок для субдоменов добавляем includeSubDomains, как в нашем случае:

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

Вы уже знаете, что после сохранения и выхода из текстового редактора, мы обязательно проверяем синтаксис и перезапускаем веб-сервер.

nginx -t

И перезапускаем веб-сервер:

systemctl restart nginx.service

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

Поиск онлайн-чекеров протокола HTTP/2 | Wiki HostPro

В заключение

После подключения вы сможете на себе проверить надежность, скорость и безопасность HTTP/2 протокола.

Telegram Hostpro

Наш телеграм

с важными анонсами, розыгрышами и мемами

Присоединиться

Возможно, вас заинтересует

Как настроить HTTPS на OpenCart

Как настроить HTTPS на OpenCart

На этот раз рассмотрим переход на HTTPS для сайта на OpenCart 2.x и 3.x....

Diana Honcharenko | Обновлено: 08.10.2020

Как настроить HTTPS для WordPress?

Как настроить HTTPS для WordPress?

В предыдущей части мы разобрались, почему после установки SSL-сертификата на сайт вы можете получать...

Diana Honcharenko | Обновлено: 07.10.2020

Как настроить HTTPS для Joomla?

Как настроить HTTPS для Joomla?

Продолжаем тему перехода на HTTPS для разных CMS. В этой части рассмотрим, как правильно...

Diana Honcharenko | Обновлено: 03.10.2020

Как настроить HTTPS для MODX?

Как настроить HTTPS для MODX?

Без лишних вступлений продолжаем говорить о переходе на протокол HTTPS для разных CMS. Сегодня...

Diana Honcharenko | Обновлено: 02.10.2020