Настройка поддержки HTTP / 2 Nginx в Ubuntu 20
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.
У нас уже есть настроенный редирект с 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 протокола.
Возможно, вас заинтересует
Как настроить HTTPS на OpenCart
На этот раз рассмотрим переход на HTTPS для сайта на OpenCart 2.x и 3.x....
Обновлено: 08.10.2020
|Как настроить HTTPS для WordPress?
В предыдущей части мы разобрались, почему после установки SSL-сертификата на сайт вы можете получать...
Обновлено: 07.10.2020
|Как настроить HTTPS для Joomla?
Продолжаем тему перехода на HTTPS для разных CMS. В этой части рассмотрим, как правильно...
Обновлено: 03.10.2020
|Как настроить HTTPS для MODX?
Без лишних вступлений продолжаем говорить о переходе на протокол HTTPS для разных CMS. Сегодня...
Обновлено: 02.10.2020
|
Наш телеграм
с важными анонсами, розыгрышами и мемами
Присоединиться