Поиск по сайту:

С HTTP/3 на горизонте, вы обновились до HTTP/2?


HTTP/3 — это следующая версия col, которая в настоящее время находится в разработке. Но 60% Интернета до сих пор не обновились до HTTP/2, который существует с 2012 года и имеет широкую поддержку. Вот как включить его в Nginx и Apache.

Что делает HTTP/2?

Если вы не используете HTTP/2, вы, вероятно, используете HTTP/1.1, который был выпущен в 1999 году, когда веб-страницы представляли собой всего один HTML-файл. В настоящее время веб-страницы делают несколько запросов на изображения, CSS и JS, и, хотя вы должны попытаться максимально сократить количество дополнительных запросов, невозможно вернуть вашу технологию к 1999 году.

Однако у HTTP/1.1 есть проблема, заключающаяся в том, что он может передавать только один поток данных за одно соединение. Это означает, что каждый файл загружается последовательно, независимо от скорости интернет-соединения пользователя, что может привести к серьезному замедлению, особенно на больших сайтах с большим количеством файлов.

HTTP/2 исправляет это, позволяя загружать несколько запросов параллельно по одному и тому же TCP-соединению, а также добавляя другие функции, такие как сжатие заголовков и возможность отправлять файлы напрямую клиентам.

Скоро выйдет HTTP/3, и он перестраивает транспортный уровень для работы через UDP, а не через TCP, в новом протоколе под названием QUIC. Он находится на ранней стадии, но HTTP/2 уже получил широкое распространение, поддерживая 40% Интернета. Вы можете включить его уже, если вы еще этого не сделали.

Включение HTTP/2 в Nginx и Apache

Поддержка HTTP/2 встроена в Nginx и Apache уже много лет, но по умолчанию она не включена, поэтому вам нужно включить ее вручную.

Одно предостережение относительно HTTP/2 заключается в том, что вы должны обслуживать HTTP/2 через защищенное соединение TLS, а это означает, что у вас должен быть установлен и настроен сертификат SSL, а также принудительно везде использовать HTTPS. Это не проблема, поскольку вы уже должны это делать. Если вы еще этого не сделали, вы можете прочитать наше руководство по настройке бесплатного сертификата от LetsEncrypt.

Конфигурация Nginx

Для Nginx убедитесь, что вы используете версию 1.9.5 или выше, запустив:

sudo nginx -v

Скорее всего, да, если только ваш сервер не сильно устарел; если это так, обновите свои пакеты:

sudo apt-get update && sudo apt-get upgrade

Затем откройте файл конфигурации для вашего сайта nginx в вашем любимом текстовом редакторе. Скорее всего, он находится в разделе /etc/nginx/sites-available/ либо под вашим доменным именем, либо «по умолчанию». Измените строки, прослушивающие порт 443, чтобы включить директиву http2 :

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

Вы можете проверить синтаксис с помощью:

sudo nginx -t

И перезапустите nginx командой:

sudo systemctl restart nginx

После этого все должно быть готово.

Конфигурация Apache

Вам нужно включить модуль http2 :

sudo a2enmod http2

Затем в определение виртуального хоста добавьте директиву Protocols :

<VirtualHost *:443>
  Protocols h2 http/1.1
</VirtualHost>

h2 – это HTTP/2, а HTTP/1.1 используется в качестве запасного варианта для старых браузеров.

Перезапустите Apache с помощью:

sudo systemctl restart apache2

И изменения должны быть сохранены.

Проверка изменений

Чтобы проверить, действительно ли ваш сайт сейчас использует протокол HTTP/2, откройте Chrome DevTools, щелкнув правой кнопкой мыши в любом месте и выбрав «Проверить». Перейдите на вкладку «Сеть» и щелкните правой кнопкой мыши заголовок информационного списка, чтобы включить «Протокол»:

Это отобразит протокол для каждого сделанного запроса. h2 — это то, что вам нужно:

Не беспокойтесь, если некоторые внешние ресурсы все еще обслуживаются через HTTP/1.1. Вы по-прежнему увидите преимущества скорости HTTP/2, поскольку запросы к другим серверам выполняются через отдельное соединение. В приведенном выше выводе с сайта linux-console.net некоторые скрипты для системы комментариев Disqus по-прежнему обслуживаются через HTTP/1.1, что не очень хорошо с их стороны, но вы мало что можете с этим поделать. С другой стороны, Google уже предоставляет свои шрифты через QUIC, если вы включили этот флаг в Chrome.