Как установить Nginx с поддержкой HTTP/2 на Ubuntu
- Что такое HTTP/2
- Как подготовить сервер
- Как установить Nginx
- Как добавить SSL-сертификат
- Как отключить устаревшие шифры
- Как настроить перенаправление на HTTPS
- Как настроить порт и включить HTTP/2
- Как перезагрузить Nginx
В статье мы расскажем, как установить 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
Готово, вы перезагрузили веб-сервер и применили настройки.