Налаштування підтримки 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, має бути спрямоване на ваш сервер. У нас ви маєте можливість зареєструвати новий домен, перевести існуючий до нас на обслуговування або направити домен у вашого реєстратора по А-запису на ваш сервер.
Також для цього домену на сервер необхідно встановити 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
Наш телеграм
з важливими анонсами, розіграшами й мемами
Приєднатися