株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

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 での有効化手順を解説します。


バージョン トランスポート 主な改善点 TLS 要件
HTTP/1.1 TCP Keep-Alive 接続 任意
HTTP/2 TCP 多重化、ヘッダー圧縮(HPACK)、サーバープッシュ 実質必須(ブラウザは TLS のみ対応)
HTTP/3 UDP(QUIC) 0-RTT 接続、ヘッドオブライン・ブロッキング解消 必須(TLS 1.3 のみ)

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

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

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 はどちらも 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 証明書の取得と自動更新


← 技術ドキュメント一覧へ戻る