HTTP/3 - это третья версия протокола передачи гипертекста (HTTP), который используется для передачи данных во Всемирной паутине. По сравнению со своим предшественником HTTP/2, HTTP/3 работает через QUIC, протокол транспортного уровня, вместо TCP. Это изменение уменьшает задержку и улучшает качество просмотра веб-страниц.
Это руководство содержит подробные инструкции по включению HTTP/3 на Nginx, если он уже установлен и работает. Мы изменим конфигурационный файл Nginx, чтобы убедиться, что модули http2 и http3 включены в директиве listen, и добавим необходимые опции в блок server.
Необходимые условия
- Работающий сервер Nginx с установленным Nginx v1.25+.
- Root или sudo доступ к серверу
- Базовые знания командной строки Linux и конфигурации Nginx
Шаг 1: Доступ к файлу конфигурации Nginx и его изменение
Чтобы начать процесс, необходимо получить доступ к конфигурационному файлу сервера Nginx. Этот конфигурационный файл обычно находится по адресу /etc/nginx/nginx.conf. Для доступа к этому файлу вы можете использовать любой текстовый редактор по вашему выбору. Однако для облегчения понимания и простоты демонстрация будет проводиться с помощью текстового редактора nano. Вы можете открыть этот файл в nano с помощью следующей команды:
1 | sudo nano /etc/nginx/nginx.conf |
Шаг 2: Изменение директивы Listen для HTTP/2 и HTTP/3
После того как вы открыли конфигурационный файл, ваша следующая задача - найти в нем блок сервера. Очень важно убедиться, что модули HTTP/2 и HTTP/3 активированы в директиве listen.
Ваша директива listen после необходимых изменений должна выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 | server { listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; listen 443 ssl http3 reuseport; listen [::]:443 ssl http3 reuseport; ... } |
В приведенном выше фрагменте директива listen предписывает Nginx отслеживать указанные порты. В данном конкретном контексте Nginx настроен на прослушивание портов 80 (HTTP), 443 (HTTPS с HTTP/2) и 443 с включенным HTTP/3.
Шаг 3: Включение параметров конфигурации SSL и HTTP/3
В идентичном блоке сервера теперь нужно добавить параметры конфигурации SSL, как показано ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 | server { ... ssl_certificate /etc/ssl/certs/your_domain.crt; ssl_certificate_key /etc/ssl/private/your_domain.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384"; ssl_prefer_server_ciphers on; # Включите QUIC и HTTP/3 ssl_quic on; ssl_early_data on; ... } |
Здесь /etc/ssl/certs/your_domain.crt и /etc/ssl/private/your_domain.key являются заполнителями. Вам нужно заменить их на правильные пути к вашему SSL сертификату и закрытому ключу, соответственно. Этот набор настроек, по сути, активирует QUIC и HTTP/3 на вашем сервере Nginx.
Шаг 4: Сохранение изменений и выход из редактора
После выполнения необходимых изменений пришло время сохранить и закрыть файл конфигурации. Если вы используете nano в качестве текстового редактора, вы можете просто сохранить и выйти, нажав Ctrl+X, затем Y, а затем Enter.
Шаг 5: Перезапуск сервера Nginx
Для того чтобы изменения вступили в силу, необходимо перезапустить сервер Nginx. Вы можете выполнить эту задачу с помощью команды, приведенной ниже:
1 | sudo systemctl restart nginx |
Шаг 6: Проверка поддержки HTTP/3
Наконец, чтобы убедиться, что ваш сервер правильно настроен для поддержки HTTP/3, вы можете воспользоваться онлайн-инструментом тестирования, например, HTTP/3 Check. Все, что вам нужно сделать, это ввести имя вашего домена и нажать кнопку "Check". Если сервер настроен правильно, вы увидите зеленую галочку, которая указывает на то, что ваш сервер поддерживает HTTP/3.
Вы также можете проверить поддержку HTTP/3, используя команду curl с флагом --http3, как показано ниже:
1 | curl -I --http3 https://your_domain.com |
Если поддержка HTTP/3 настроена правильно, вы получите ответ, начинающийся с HTTP/3 200, как показано в этом гипотетическом выводе:
1 2 3 4 5 | HTTP/3 200 ... content-type: text/html; charset=UTF-8 alt-svc: h3=":443"; ma=86400 ... |
В приведенном выше выводе код состояния HTTP/3 200 указывает на успешный HTTP-запрос. Строка alt-svc показывает, что на этом сервере доступны альтернативные услуги, включая поддержку HTTP/3 на порту 443. Значение ma (максимальный возраст) показывает, как долго эта информация должна кэшироваться, в данном случае в течение 86400 секунд (один день).
Заключение
Включение HTTP/3 и QUIC на вашем сервере Nginx может стать важным шагом на пути к оптимизации производительности и безопасности ваших веб-приложений. Это техническое руководство провело вас через весь процесс, показав, как получить доступ и изменить конфигурационный файл Nginx, изменить директиву Listen для HTTP/2 и HTTP/3, включить необходимые конфигурации SSL и HTTP/3, сохранить изменения, перезапустить сервер Nginx и, наконец, проверить поддержку HTTP/3.