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

В статье мы расскажем, как установить Nginx на ОС Ubuntu и как настроить на нем HTTP/2. Инструкция подходит для Ubuntu версий 18.04 и 20.04.

Что такое HTTP/2

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

Основные изменения, которые претерпела новая версия протокола:

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

Протокол HTTP/2 может работать корректно только при поддержке HTTPS.

Как подготовить сервер

Все действия нужно выполнять через SSH-подключение. Для детальной настройки HTTP версии 2 вам потребуются:

  • сервер с ОС Ubuntu,

  • активный SSL-сертификат,

  • активный домен, который привязан к вашему серверу.

В первую очередь необходимо создать нового пользователя. Не рекомендуем устанавливать и настраивать ПО от имени root-пользователя: это может поставить безопасность сервера под угрозу.

Чтобы создать пользователя:

1. Подключитесь к серверу по SSH.

2. Создайте пользователя с помощью команды:

adduser username

Вместо username укажите имя пользователя.

Затем введите пароль для нового пользователя и заполните дополнительную информацию.

3. Предоставьте пользователю права sudo:

usermod -aG sudo usermod -aG sudo

Вместо username укажите имя пользователя.

Готово, теперь завершите сеанс под root и подключитесь под новым пользователем.

Как установить Nginx

1. Подключитесь к серверу по SSH.

2. Обновите операционную систему. Для этого поочередно выполните команды:

sudo apt update
sudo apt upgrade

3. Установите Nginx:

sudo apt-get install nginx

4. Проверьте корректность установки:

sudo nginx -v

Если установка прошла без проблем, на экране отобразится версия ПО.

Готово, вы завершили установку.

Как добавить SSL-сертификат

Для установки сертификата на сервере вам понадобятся сам SSL-сертификат, корневой сертификат, промежуточный сертификат и приватный ключ.

Для установки сертификата выполните действия:

1. Подключитесь к серверу по SSH.

2. Создайте директорию для хранения сертификатов:

sudo mkdir /etc/nginx/ssl

3. Создайте файл сертификата:

sudo nano /etc/nginx/ssl/test.ru.crt

Вместо test.ru укажите имя вашего домена.

4. Вставьте сам SSL-сертификат, корневой и промежуточный сертификат. Текст должен идти подряд, без пустых строк. Затем нажмите Ctrl + O, чтобы сохранить изменения и Ctrl + X, чтобы закрыть файл.

5. Создайте файл приватного ключа:

sudo nano /etc/nginx/ssl/test.ru.key

Вместо test.ru укажите имя вашего домена.

6. Вставьте приватный ключ. Затем нажмите Ctrl + O, чтобы сохранить изменения и Ctrl + X, чтобы закрыть файл.

7. Откройте конфигурационный файл веб-сервера:

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

8. После правил listen добавьте строки:

ssl_certificate /etc/nginx/ssl/test.ru.crt;
ssl_certificate_key /etc/nginx/ssl/test.ru.key;

Вместо test.ru укажите имя вашего домена.

Затем нажмите Ctrl + O, чтобы сохранить изменения и Ctrl + X, чтобы закрыть файл.

Готово, вы добавили SSL-сертификат.

Как отключить устаревшие шифры

Шифр — это криптографический алгоритм, в котором описан метод кодирования данных при передаче.

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

1. Подключитесь к серверу по SSH.

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

sudo nano /etc/nginx/nginx.conf

3. После правила ssl_prefer_server_ciphers добавьте строку:

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

Затем нажмите Ctrl + O, чтобы сохранить изменения и Ctrl + X, чтобы закрыть файл.

4. Проверьте конфигурационный файл на ошибки:

sudo nginx -t

Если файл настроен корректно, на экране появится сообщение:

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

Готово, вы отключили устаревшие шифры.

Как настроить перенаправление на HTTPS

1. Подключитесь к серверу по SSH.

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

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

3. Добавьте блок:

server {

listen              80;

listen         [::]:80;

server_name         test.ru;

return              301 https://$server_name$request_uri;

}

Вместо test.ru укажите имя вашего домена. Затем нажмите Ctrl + O, чтобы сохранить изменения и Ctrl + X, чтобы закрыть файл.

Готово, вы настроили перенаправление на HTTPS.

Как настроить порт и включить HTTP/2

Чтобы защищенное соединение работало корректно, нужно открыть порт 443. Для этого:

1. Подключитесь к серверу по SSH.

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

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

3. Закомментируйте строки, поставив знак # в начале каждой строки:

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

4. Раскомментируйте строки, убрав перед ними знак #. Чтобы включить HTTP 2, в первой строке после ssl добавьте http2:

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

5. В строке server_name укажите домен, который привязан к серверу:

server_name test.ru

Так выглядит настроенный блок server:

Nginx и HTTP 2

Нажмите Ctrl + O, чтобы сохранить изменения и Ctrl + X, чтобы закрыть файл.

Готово, вы настроили порт и включили HTTP/2.

Как перезагрузить Nginx

Перезагрузка веб-сервера требуется, чтобы применить все изменения. Однако предварительно нужно проверить конфигурационный файл на ошибки. Для этого выполните команду:

sudo nginx -t

Если настройка прошла корректно, на экране отобразится сообщение:

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

После этого перезагрузите Nginx с помощью команды:

sudo systemctl restart nginx

Готово, вы перезагрузили веб-сервер и применили настройки.

Если вы не нашли ответ, спросите у нас!
Написать в поддержку