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

Також для цього домену на сервер необхідно встановити 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