HOME > 技術ドキュメント > HTTP/2・HTTP/3(QUIC)設定(Nginx / Ubuntu 24.04 LTS)
HTTP/2・HTTP/3(QUIC)設定(Nginx / Ubuntu 24.04 LTS)
HTTP/2 は多重化・ヘッダー圧縮により HTTP/1.1 より高速で、現在のほとんどのブラウザが対応しています。 HTTP/3 は UDP ベースの QUIC プロトコルを使いさらなる低遅延を実現します。 どちらも TLS(HTTPS)が前提です。本記事では Nginx での有効化手順を解説します。
HTTP バージョンの比較
| バージョン | トランスポート | 主な改善点 | TLS 要件 |
|---|---|---|---|
| HTTP/1.1 | TCP | Keep-Alive 接続 | 任意 |
| HTTP/2 | TCP | 多重化、ヘッダー圧縮(HPACK)、サーバープッシュ | 実質必須(ブラウザは TLS のみ対応) |
| HTTP/3 | UDP(QUIC) | 0-RTT 接続、ヘッドオブライン・ブロッキング解消 | 必須(TLS 1.3 のみ) |
Nginx のバージョン確認
nginx -v
HTTP/2 は Nginx 1.9.5 以降、HTTP/3(QUIC)は Nginx 1.25.0 以降(mainline)で利用可能です。Ubuntu 24.04 の標準パッケージ(1.24.x)は HTTP/3 非対応のため、HTTP/3 を使う場合は nginx.org の mainline パッケージを使います。
# nginx.org の mainline を使う場合 curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor \ -o /etc/apt/keyrings/nginx.gpg echo "deb [signed-by=/etc/apt/keyrings/nginx.gpg] \ https://nginx.org/packages/mainline/ubuntu noble nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list sudo apt update && sudo apt install -y nginx
HTTP/2 の有効化
Nginx 1.25.1 以降は http2 on; ディレクティブを使います。旧来の listen 443 ssl http2; は非推奨です。
server {
listen 443 ssl;
http2 on;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# HTTP → HTTPS リダイレクト
root /var/www/html;
index index.html;
}
server {
listen 80;
server_name www.example.com;
return 301 https://$host$request_uri;
}
sudo nginx -t && sudo systemctl reload nginx
HTTP/3(QUIC)の有効化
Nginx mainline(1.25.0+)での設定例です。UDP 443 番ポートをファイアウォールで開放する必要があります。
server {
listen 443 ssl;
listen 443 quic reuseport;
http2 on;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.3;
# ブラウザに HTTP/3 の利用可能を通知する
add_header Alt-Svc 'h3=":443"; ma=86400';
}
UFW で UDP 443 を開放します。
sudo ufw allow 443/udp
動作確認
curl でプロトコルバージョンを確認します。
# HTTP/2 の確認 curl -I --http2 https://www.example.com # HTTP/3 の確認(curl 7.88+ が必要) curl -I --http3 https://www.example.com
Chrome DevTools(F12 → Network タブ)の「Protocol」列に h2 または h3 と表示されれば有効化されています。
HTTP/2・HTTP/3 には SSL証明書が必須
HTTP/2 と HTTP/3 はどちらも TLS(HTTPS)が前提です。SSL証明書なしでは有効化できません。
特に企業サイト・EC サイトでは DV 証明書に加えて、組織の実在性を証明する OV・EV 証明書の導入が推奨されます。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
RapidSSL 3,960円/1年(税込)〜で SSL証明書を販売しています。審査サポート・インストール代行も対応しています。
SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス
関連ドキュメント
Nginx SSL/TLS 設定(Ubuntu 24.04 LTS) — HTTPS 設定、TLS 1.2/1.3、リバースプロキシ
Apache インストール(Ubuntu 24.04 LTS) — Apache での HTTP/2 有効化(mod_http2)
Certbot(Let's Encrypt)自動更新設定 — 無料 SSL 証明書の取得と自動更新
