HTTP://
#root

HTTP/3

От HTTP/0.9 до HTTP/3 — как менялся протокол, который держит Интернет.

1991 1996 1997 2015 2019
скролл вниз, чтобы погрузиться

Краткая история

$ cat /history/http.txt

1989 — Тим Бернерс-Ли в CERN создаёт HTTP для обмена документами.
1991HTTP/0.9 (только GET, без заголовков).
1996HTTP/1.0 (заголовки, статус‑коды, POST).
1997HTTP/1.1 (keep‑alive, конвейеризация, Host).
2015HTTP/2 (двоичный формат, мультиплексирование).
2019HTTP/3 (QUIC на базе UDP, 0‑RTT).

// всё начиналось с одной строки...

Версии протокола

0.9
1991
  • Только GET
  • Без заголовков
  • Только HTML
1.0
1996
  • POST, HEAD
  • Заголовки
  • Статус‑коды
1.1
1997
  • Keep‑alive
  • Конвейеризация
  • Заголовок Host
2
2015
  • Двоичный формат
  • Мультиплексирование
  • Сжатие HPACK
3
2019
  • QUIC / UDP
  • 0‑RTT соединение
  • Устранение HOL

Настройка Nginx + HTTP/3

# nginx.conf — включение QUIC
server {
    listen 443 quic reuseport;
    listen [::]:443 quic reuseport;
    listen 443 ssl http2;   # fallback

    ssl_certificate     /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/privkey.pem;
    ssl_protocols       TLSv1.3;
    ssl_early_data      on;    # 0‑RTT

    add_header Alt-Svc 'h3=":443"; ma=86400';

    location / {
        root /var/www/html;
        index index.html;
    }
}

// после проверки nginx -t и systemctl reload nginx

🔍

Проверка QUIC из консоли

▸ Проверка Alt-Svc

$ curl -I https://ваш-сайт.ru | grep alt-svc
alt-svc: h3=":443"; ma=86400

▸ curl с HTTP/3 (Docker)

$ docker run --rm ymuski/curl-http3 \
    curl --http3-only -ksSLI https://ваш-сайт.ru
HTTP/3 200