nginx 1.30 最新技術スタック完全解説 — HTTP/2→上流、Early Hints、Sticky Sessions まで
はじめに
2026年4月14日、nginx の最新安定版 nginx 1.30.0 がリリースされました。本バージョンは 1.29.x メインラインブランチで蓄積された新機能とバグ修正を取り込んでおり、ここ数年で最大の機能追加を伴うリリースです。
本記事では、nginx の最新技術スタックを主要機能ごとに解説します。
エディションの整理
nginx には以下のブランチが存在します。
| ブランチ | 最新バージョン | リリース日 | 用途 |
|---|---|---|---|
| Stable | 1.30.0 | 2026-04-14 | 本番推奨、バグフィックスのみ |
| Mainline | 1.29.8 | 2026-04-07 | 最新機能を含む開発中ブランチ |
| njs | 0.9.8 | 2026-04-23 | nginx JavaScript 拡張 |
HTTP/2 → 上流(バックエンド)対応
1.29.4 で導入された最大の機能は、HTTP/2 による上流サーバーとの通信です。
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 443 ssl;
http2 on;
location / {
proxy_pass https://backend;
proxy_http_version 2; # HTTP/2 で上流と通信
}
}
従来は上流との通信は HTTP/1.1 のみでしたが、HTTP/2 対応により以下のメリットがあります:
| 項目 | HTTP/1.1 上流 | HTTP/2 上流 |
|---|---|---|
| 多重化 | 不可(コネクション単位) | 可能(ストリーム単位) |
| ヘッダ圧縮 | なし | HPACK 圧縮 |
| ストリーム優先度 | なし | Weight / Dependency |
| デフォルトkeepalive | ❌(1.29.7以前) | ✅ |
Keepalive のデフォルト有効化
1.29.7 より、上流へのプロキシにおける keepalive がデフォルトで有効になりました。
# 1.29.7 以降のデフォルト動作:
proxy_http_version 1.1; # HTTP/1.1 に自動設定
# Connection ヘッダはデフォルトで送信しない
これにより、従来明示的に記述していた以下の設定が不要になりました:
# 1.29.6 以前は必須だった設定(1.29.7 以降はデフォルト化)
# proxy_http_version 1.1;
# proxy_set_header Connection "";
Early Hints (HTTP 103)
1.29.0 で導入された HTTP 103 Early Hints に対応しました。サーバーが最終レスポンスを生成する前に、ブラウザにヒントを送信することでページ読み込みを高速化します。
server {
listen 443 ssl http2;
location / {
early_hints on;
# 103 で送信する Link プリロードヘッダ
add_header Link "</style.css>; rel=preload; as=style";
}
}
動作フロー:
クライアント → nginx: GET /index.html
nginx → クライアント: 103 Early Hints (Link: </style.css>)
nginx → 上流: GET /index.html
クライアント → CDN: GET /style.css ← 上流の応答を待たずにプリロード開始
nginx → クライアント: 200 OK (HTML本体)
Encrypted ClientHello (ECH)
1.29.4 で Encrypted ClientHello (ECH) のサポートが追加されました。TLS ハンドシェイクの初期メッセージを暗号化し、接続先サーバーの SNI を秘匿します。
server {
listen 443 ssl;
ssl_certificate /etc/ssl/certs/example.com.pem;
ssl_certificate_key /etc/ssl/private/example.com.key;
# ECH 設定ファイル(OpenSSL ECH feature branch が必要)
ssl_ech_file /etc/ssl/ech/example.com.ech;
}
前提条件:
- OpenSSL の ECH フィーチャーブランチが必要
- DNS への ECH 設定レコードの公開が必要
Sticky Sessions(セッションアフィニティ)
1.29.6 で待望の Sticky Sessions 機能がネイティブサポートされました。
upstream backend {
sticky; # クッキーベースのスティッキー
server backend1.example.com route=s1;
server backend2.example.com route=s2 drain; # drain: 徐々に切り離し
}
対応しているスティッキー方式:
| 方式 | 説明 |
|---|---|
sticky; | クッキーベース(デフォルト) |
sticky route; | $route 変数ベース |
sticky learn; | レスポンスクッキーを学習 |
drain パラメータは、サーバーをメンテナンスモードに移行する際に、既存のセッションを継続しつつ新規リクエストを受け付けないようにするために使用します。
Multipath TCP (MPTCP)
1.29.7 で Multipath TCP のサポートが追加されました。複数のネットワークパスを同時に利用し、冗長性とスループットを向上させます。
server {
listen 443 ssl multipath;
# ↑ マルチパス対応のリスナーが作成される
}
暗号化・TLS スタック
OpenSSL 4.0 互換
1.29.8 で OpenSSL 4.0 との互換性が確保されました。
# OpenSSL 4.0 ではデフォルトで FIPS 準拠の暗号スイートが優先される
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers DEFAULT;
AWS-LC 対応
1.29.2 より、AWS の暗号化ライブラリ AWS-LC でのビルドがサポートされています。
# AWS-LC を使ったビルド
./configure --with-aws-lc
make
njs (nginx JavaScript)
njs は 0.9.8 までバージョンアップし、以下の機能拡張が行われました:
- WebCrypto Ed25519 / X25519 対応
wrapKey()/unwrapKey()鍵ラッピングcrypto.randomUUID()UUID 生成
// njs 0.9.8 の新機能: Ed25519 署名
const crypto = require('crypto');
const { publicKey, privateKey } = crypto.generateKeyPairSync('ed25519');
const signature = crypto.sign(null, 'hello', privateKey);
const verified = crypto.verify(null, 'hello', publicKey, signature);
ACME (自動証明書更新)
nginx-acme 0.4.0 がリリースされ、Let’s Encrypt 等の ACME 証明書を nginx で直接取得・更新できるようになりました。
# ACME の設定例
http {
acme_client example.com {
key_type ec;
directory https://acme-v02.api.letsencrypt.org/directory;
}
server {
server_name example.com;
ssl_certificate $acme_cert;
ssl_certificate_key $acme_cert_key;
}
}
ビルドオプション(2026年推奨)
./configure \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_v3_module \ # HTTP/3 (QUIC)
--with-http_early_hints_module \ # 最近の安定版でデフォルトに
--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-http_auth_request_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-pcre-jit \
--with-compat
make -j$(nproc)
make install
セキュリティアップデート
2025-2026 年に修正された主要な CVE:
| CVE | 影響 | 修正バージョン |
|---|---|---|
| CVE-2026-27654 | alias ディレクティブのバッファオーバーフロー | 1.29.7 |
| CVE-2026-1642 | SSL バックエンドへのプレインテキスト注入 | 1.29.5 |
| CVE-2025-53859 | SMTP 認証サーバーへのメモリ漏洩 | 1.29.1 |
| CVE-2025-23419 | TLSv1.3 SNI による SSL セッション再利用 | 1.27.4 |
まとめ
nginx 1.30 系は、20年以上の歴史を持つ Web サーバーとして、常に最新のプロトコルとセキュリティ要件に対応し続けています。
特に HTTP/2 上流通信、keepalive のデフォルト化、Sticky Sessions ネイティブ対応 は、従来別途リバースプロキシやロードバランサーで対応していた機能を nginx 単体で完結できるようにした点で、運用負荷の大幅な低減につながります。
最新の nginx は nginx.org からダウンロードできます。