Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NGINXENG JP#2 - 3-NGINX Plus・プロダクトのアップデート

hiropo20
January 26, 2023

NGINXENG JP#2 - 3-NGINX Plus・プロダクトのアップデート

■NGINX-エンジニアリング勉強会#2
https://nginx-eng.connpass.com/event/270365/

その他のイベント資料や動画などイベントページをご覧ください。

hiropo20

January 26, 2023
Tweet

More Decks by hiropo20

Other Decks in Technology

Transcript

  1. NGINX Plus・プロダクトの
    アップデート
    Hiroshi Matsumoto

    View Slide

  2. ©2022 F5
    2
    NGINXとは
    HTTPS/gRPC
    App
    TCP/UDP
    SMTP
    HTML File
    WEBサーバ / Path Routing / キャッシュ /
    通信の細かな制御により、
    高速 安定 高機能
    高機能なReverse Proxy / キャッシュサーバ
    Load Balancing / API Gateway として利用可能
    アップデート内容を
    ご紹介いたします

    View Slide

  3. ©2022 F5
    3
    NGINXが提供する
    ソフトウェア

    View Slide

  4. ©2022 F5
    4
    NGINXが提供するソフトウェア
    NGINX Plus
    NGINX OSSをベースに、さらなるエンタープライズユースに対応したソフトウェア
    (分散・冗長性・JWT制御・API制御 に加え、各種セキュリティモジュールの利用が可能)
    NGINX Management Suite NGINX統合管理ソフトウェア。NGINX PlusによるAPI管理
    NGINX Instance Manager
    NGINX OSS、NGINX Plusの統合管理。ヒストリカルなAPM機能、コンフィグ・証明書管理、
    管理対象のNGINX OSS / NGINX Plusに対するAPI制御機能を提供
    NGINX App Protect WAF F5が提供する、ミッションクリティカル環境に最適な高速な高品質なWAF
    NGINX App Protect DoS 従来のツールでは検知できないレイヤー7のDoS脅威から高度な保護を提供
    NGINX Ingress Controller Kubernetes環境での高度な通信制御を提供。NGINX機能をIngressリソースを通じて管理可能。
    NGINX Service Mesh NGINX Plusによるコンテナ間の制御を提供するシンプルなサービスメッシュソリューション
    NGINX for Azure NGINX PlusをAzureからSaaS環境として提供、コンフィグを貼り付けるだけで活用が可能
    All-In-One SW
    Overview
    NGINX OSS Dev/Opsに最適な、超軽量・高速・多機能なAll-In-One Software
    NGINX Unit 動的かつ分散アプリケーション環境向けに設計されたアプリケーションサーバ
    NJS (NGINX JavaScript) NGINXの機能を拡張するJavaScript言語のサブセットモジュール
    NJS
    Open Source Security Container SaaS

    View Slide

  5. ©2022 F5
    5
    主要NGINXソフトウェアの構成イメージ
    App
    Proxy
    Client
    App
    NJS
    オンプレミス
    クラウド・コンテナ
    K8S(コンテナ・NIC)
    NGINX OSS
    環境
    App
    HTTP
    gRPC
    etc
    TCP/
    UDP
    NGINX Plus
    App
    オンプレミス
    クラウド・コンテナ
    K8S(コンテナ・NIC)
    App
    WAF
    DOS
    NJS
    HTTP
    gRPC
    etc
    TCP/
    UDP
    NGINX Unit
    App
    オンプレミス
    クラウド・コンテナ
    K8S(コンテナ)
    JS Ruby
    Go
    Java Perl
    PHP
    Python
    HTTP
    NGINX Ingress
    Controller
    Pod
    K8S(NIC)
    Pod
    WAF
    DOS
    NJS
    HTTP
    SMTP
    etc
    TCP/
    UDP
    NGINX Service
    Mesh
    K8S(NSM)
    C
    HTTP
    gRPC
    TCP/
    UDP
    Container
    Container
    C
    JWT/OIDC/ActiveHC/
    Cookie Persistence/
    より詳細なMetrics/
    メーカーSupport
    OSS

    View Slide

  6. ©2022 F5
    6
    NGINX
    リリースサイクル

    View Slide

  7. ©2022 F5
    7
    NGINX OSS – リリースサイクル
    NGINX OSSは、mainline(奇数)とstable(偶数)の二種類に分かれます
    毎年4月にmainlineからstableをforkします。以降のリリースVersionが新しい番号へ更新されます
    NGINX Plusは、NGINX OSSと別のレポジトリで管理されています。mainlineからforkされます
    NGINXはmainlineの利用を推奨しますが、更新頻度などの観点からstableの利用も可能です
    1year 1year
    ここが「mainline」
    頻繁な機能追加

    View Slide

  8. ©2022 F5
    8
    R26 R27 R28
    NGINX Plusは、NGINXメインラインでテスト・実証された、すべてのOSS新機能を取り入れます。
    NGINX Plusは、年3回バイナリパッケージがリリースされます。
    NGINX Plusは、エンタープライズ向けの追加機能と商用サポート(英語、日本語)が含まれています。
    NGINX Plusは、リリースから2年間サポートされます。
    NGINX Plus – リリースサイクル
    https://docs.nginx.com/nginx/releases/
    N+は「mainline」を
    Mergeしている
    1.21.5 1.21.6 1.23.2

    View Slide

  9. ©2022 F5
    9
    NGINX Plus
    リリース情報について

    View Slide

  10. ©2022 F5
    10
    NGINX Plus リリース情報
    https://docs.nginx.com/nginx/releases/
    https://www.nginx.co.jp/blog/nginx-plus-r28-released/
    https://www.nginx.com/blog/nginx-plus-r28-released/
    日本語翻訳
    少し時間を開けて日本語
    Verが公開されます
    NGINX Plus リリース紹介Blog
    NGINX Plus リリースノート
    ご紹介スライドもご用意してますので気になる
    リリースがあればお気軽にご連絡ください

    View Slide

  11. ©2022 F5
    11
    NGINX Plus
    過去リリース・アップデート内容

    View Slide

  12. ©2022 F5
    12
    NGINX OSS / Plus – リリースサイクル
    https://docs.nginx.com/nginx/releases/
    1.21.3 1.21.5
    R25 R26
    1.19.10
    R24
    2021/4/28 9/28 2022/2/15
    2021/4/20
    2022/5/24
    1.19.5
    R23
    1.19.10
    R22
    2020/6/9 12/8
    1.23.2
    R28
    1.21.6
    R27
    2022/6/28 11/29
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    fork

    View Slide

  13. ©2022 F5
    13
    NGINX OSS / Plus リリース:R22
    https://www.nginx.com/blog/nginx-plus-r22-released/
    1.21.3 1.21.5
    R25 R26
    1.19.10
    R24
    2021/4/28 9/28 2022/2/15
    2021/4/20
    2022/5/24
    1.19.5
    R23
    12/8
    1.23.2
    R28
    1.21.6
    R27
    2022/6/28 11/29
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    fork
    1.19.10
    R22
    2020/6/9
    • クライアント証明書認証の強化
    • OCSP対応の追加
    • NGINX JavaScriptモジュールの強化
    • バグ修正とJavaScriptモジュールのイン
    ポートやヘッダーオブジェクトのアクセス
    が追加されました
    • 複数IdPに対するOpenID Connectのサポート
    • OCSP対応の追加
    • NGINX Plus ダッシュボードの強化
    • リクエストとコネクション制限のチャート
    • OIDCアクティビティに関するメトリクス
    • Support Platform
    • Alpine Linux 3.9, 3.10, 3.11
    • Amazon Linux (2018.03+), Amazon Linux 2 LTS
    • CentOS 6.5+, 7.4+, 8.0+
    • Debian 9, 10
    • FreeBSD 11.3+, 12.1+
    • Oracle Linux 6.5+, 7.4+
    • RHEL 6.5+, 7.4+, 8.0+
    • SUSE Linux Enterprise Server 12, 15
    • Ubuntu 16.04 LTS, 18.04 LTS, 19.10, 20.04 LTS
    • Support 終了
    • Alpine Linux 3.8

    View Slide

  14. ©2022 F5
    14
    NGINX OSS / Plus リリース:R23
    https://www.nginx.co.jp/blog/nginx-plus-r23-released/
    1.21.3 1.21.5
    R25 R26
    1.19.10
    R24
    2021/4/28 9/28 2022/2/15
    2021/4/20
    2022/5/24
    1.19.10
    R22
    2020/6/9
    1.23.2
    R28
    1.21.6
    R27
    2022/6/28 11/29
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    fork
    1.19.5
    R23
    12/8
    • NGINX JavaScriptモジュールの強化
    • バッファモジュールを追加
    • クエリ文字列モジュールを追加
    • gRPC アクティブヘルスチェックのサポート
    • 非特権インストールのサポート
    • 権限のない(non-root)ユーザーによるNGINX
    Plusのインストール方法を提供します
    • OpenID Connect PKCEのサポート
    • 動的モジュールの更新
    • SPNEGOモジュールのサポート
    • Prometheus-njsで追加メトリクスを提供
    • 新しいproxy_cookie_flagsディレクティブ追
    加、set_cookie_flagモジュールの非対応化。
    NGINX PlusR26で削除される予定です
    • その他、SSL Cipher追加、TLS機能追加、Cache
    機能追加など
    • Support Platform
    • Alpine Linux 3.10, 3.11, 3.12
    • Amazon Linux (2018.03+), Amazon Linux 2 LTS
    • CentOS 7.4+, 8.0+
    • Debian 9, 10 (aarch64, x86_64)
    • FreeBSD 11.2+, 12.0+
    • Oracle Linux 7.4+
    • RHEL 7.4+, 8.0+
    • SUSE Linux Enterprise Server 12, 15
    • Ubuntu 16.04 LTS, 18.04 LTS, 20.04LTS (aarch64,
    x86_64)
    • Support 終了
    • Alpine Linux 3.9
    • CentOS/Oracle Linux/RHEL 6.5
    • Ubuntu 19.10

    View Slide

  15. ©2022 F5
    15
    NGINX OSS / Plus リリース:R24
    https://www.nginx.com/blog/nginx-plus-r24-released/
    fork
    1.21.3 1.21.5
    R25 R26
    9/28 2022/2/15
    2021/4/20
    2022/5/24
    1.19.5
    R23
    1.19.10
    R22
    2020/6/9 12/8
    1.23.2
    R28
    1.21.6
    R27
    2022/6/28 11/29
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    1.19.10
    R24
    2021/4/28
    • NGINX JavaScriptモジュールの強化
    • HTTPレスポンスのHeader/Bodyのフィルタ
    • 処理中に外部へHTTPリクエストを可能に
    • Encrypted JSON Web Token(JWE)のサポート
    • HTTP/2に関するディレクティブの統合
    • HTTP/1.1, HTTP/2のコネクション管理の効率化
    • ヘルスチェックステータスのログレベル変更
    • NGINX Plusで利用するリポジトリの変更
    • plus-pkgs.nginx.com -> pkgs.nginx.com/plus
    • Support Platform
    • Alpine Linux 3.10, 3.11, 3.12, 3.13
    • Amazon Linux (2018.03+), Amazon Linux 2 LTS
    • CentOS 7.4+, 8.0+ (aarch64, x86_64, ppc64le)
    • Debian 10 (aarch64, x86_64)
    • FreeBSD 11.2+, 12.0+, 13(amd64)
    • Oracle Linux 7.4+
    • RHEL 7.4+, 8.0+
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 16.04 LTS, 18.04 LTS, 20.04LTS (aarch64,
    x86_64)
    • Support 終了
    • Debian 9

    View Slide

  16. ©2022 F5
    16
    NGINX OSS / Plus リリース:R25
    https://www.nginx.co.jp/blog/nginx-plus-r25-released/
    1.21.5
    R26
    1.19.10
    R24
    2021/4/28 2022/2/15
    2021/4/20
    2022/5/24
    1.19.5
    R23
    1.19.10
    R22
    2020/6/9 12/8
    1.23.2
    R28
    1.21.6
    R27
    2022/6/28 11/29
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    fork
    1.21.3
    R25
    9/28
    • NGINX JavaScirptモジュールの機能強化
    • JavaScriptES6との互換性を強化
    • Encrypted JSON Web Token(JWE)の拡張
    • NGINX Plus REST APIで取得できるステータスの
    追加
    • 2xx,4xx,5xx の詳細なステータスをカウント
    • アップストリーム用 共有メモリゾーン使用容量
    の増加
    • Proxy用の動的SSL/TLSクライアント証明書のサ
    ポート
    • HTTPリクエスト処理のセキュリティ強化
    • TCP/UDP(stream)のHealtch Check持続性を拡張
    • Cookie-Flagモジュールの廃止
    • Support Platform
    • Alpine Linux 3.11, 3.12, 3.13, 3.14
    • Amazon Linux 2 LTS
    • CentOS 7.4+, 8.0+ (aarch64, x86_64, ppc64le)
    • Debian 10, 11 (aarch64, x86_64)
    • FreeBSD 12.1+, 13(amd64)
    • Oracle Linux 7.4+
    • RHEL 7.4+, 8.0+
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 18.04 LTS, 20.04LTS (aarch64,
    x86_64)
    • Support 終了
    • Alpine Linux 3.10
    • Amazon Linux (2018.03+)
    • FreeBSD 11.4+
    • Ubuntu 16.04 LTS

    View Slide

  17. ©2022 F5
    17
    NGINX OSS / Plus リリース:R26
    https://www.nginx.co.jp/blog/nginx-plus-r26-released/
    1.21.3
    R25
    1.19.10
    R24
    2021/4/28 9/28
    2021/4/20
    2022/5/24
    1.19.5
    R23
    1.19.10
    R22
    2020/6/9 12/8
    1.23.2
    R28
    1.21.6
    R27
    2022/6/28 11/29
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    fork
    1.21.5
    R26
    2022/2/15
    • TLSハンドシェイクの強化
    • StreamのALPNに関する制御の提供
    • TLSネゴシエーション NPNのサポート終了
    • NGINX JavaScriptモジュールの強化
    • async, awaitキーワード, Promiseオブジェク
    トサポート, WebCrypto APIによる新しい暗
    号機能の追加
    • StreamモジュールでのTCP Half Closeサポート
    • Perl正規表現モジュールPCRE2に対応
    • JSON KeyキャッシングによるJWT検証の高速化
    • JSON Web Key Set (JWKS)をメモリにキャッ
    シュし、検証を高速化
    • IBM Z (s390x) アーキテクチャーのサポート
    • CentOS 8.1 +、RHEL8.1、Ubuntu 20.04を搭載
    したIBM Z(s390x)アーキテクチャをサポート
    • Support Platform
    • Alpine Linux 3.12, 3.13, 3.14, 3.15
    • Amazon Linux 2 LTS
    • CentOS 7.4+, 8.1+ (aarch64, x86_64, ppc64le, s390x)
    • Debian 10, 11 (aarch64, x86_64)
    • FreeBSD 12.1+, 13(amd64)
    • Oracle Linux 7.4+
    • RHEL 7.4+, 8.1+
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 18.04 LTS, 20.04LTS (aarch64, x86_64,
    s390x)
    • Support 終了
    • Alpine Linux 3.11

    View Slide

  18. ©2022 F5
    18
    NGINX OSS / Plus リリース:R27
    https://www.nginx.co.jp/blog/nginx-plus-r27-released/
    1.21.3 1.21.5
    R25 R26
    1.19.10
    R24
    2021/4/28 9/28 2022/2/15
    2021/4/20
    2022/5/24
    1.19.5
    R23
    1.19.10
    R22
    2020/6/9 12/8
    1.23.2
    R28
    11/29
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    fork
    1.21.6
    R27
    2022/6/28
    • Kernel TLS 対応
    • Active Health Check用のKeepAliveコネクション
    • NGINX Plus REST API version 8 - SSL統計情報の強化
    • JWT検証時のerrorコードカスタマイズ
    • Prometheus-njs-moduleの強化
    • Support Platform
    • Alpine Linux 3.13, 3.14, 3.15, 3.16
    • Amazon Linux 2 LTS
    • CentOS 7.4+ (aarch64, x86_64)
    • Debian 10, 11 (aarch64, x86_64)
    • FreeBSD 12.1+, 13 (amd64)
    • Oracle Linux 7.4+, 8.1+ (x86_64, aarch64)
    • RHEL 7.4+, 8.1+, 9.0+ (aarch64, x86_64,
    s390x)
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 18.04 LTS, 20.04 LTS, 22.04 LTS
    (aarch64, x86_64, s390x)
    • Support 終了
    • Alpine Linux 3.12
    • CentOS 8
    • Power 8アーキテクチャ
    • Debian 10は次期バージョンでサポート終
    了予定

    View Slide

  19. ©2022 F5
    19
    NGINX OSS / Plus リリース:R28
    https://www.nginx.co.jp/blog/nginx-plus-r28-released/
    1.21.3 1.21.5
    R25 R26
    1.19.10
    R24
    2021/4/28 9/28 2022/2/15
    2021/4/20
    2022/5/24
    1.19.5
    R23
    1.19.10
    R22
    2020/6/9 12/8
    1.21.6
    R27
    2022/6/28
    7/21
    5/25
    1.21.0
    1.23.0
    m
    m
    S
    S
    1.17.10
    1.19.10
    1.21.6
    1.22.0
    1.20.0
    5/26
    1.19.0
    2020/4/21
    1.18.0 S m
    fork
    fork
    fork
    • NGINX Plus 追加のTLSメトリクス
    • PROXY プロトコル v2 TLVのサポート
    • Stickey Cookie パラメータ追加
    • SameStite属性をCookieへ追加可能に
    • NGINX Plus サポートOSの追加
    • AlmaLinux / Rockey Linux 8 および 9上で
    NGINX Plusが利用可能に
    1.23.2
    R28
    11/29
    • Support Platform
    • AlmaLinux 8, 9
    • Alpine Linux 3.13, 3.14, 3.15, 3.16, 3.17
    • Amazon Linux 2 LTS
    • CentOS 7.4+
    • Debian 11
    • FreeBSD 12.1+, 13 (amd64)
    • Oracle Linux 7.4+, 8.1+, 9.0+
    • RHEL 7.4+, 8.1+, 9.0+
    • Rocky Linux 8, 9
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 18.04 LTS, 20.04 LTS, 22.04 LTS
    • Support 終了
    • Debian 10
    • NGINX JavaScriptモジュールの強化
    • 0.7.5 から 0.7.8 で行われた変更の反映
    • その他、NGINX OSSの機能変更
    • ssl_session_cacheディレクティブの共有
    キャッシュで、TLS セッションチケットの
    キーが自動的にローテートされる
    • いくつかのTLS/SSLエラーを、critからinfoに
    引き下げ

    View Slide

  20. ©2022 F5
    20
    NGINX Plus
    過去アップデート詳細紹介資料
    R26 - R28

    View Slide

  21. NGINX Plus Release 26 (R26)
    NGINX open source build 1.21.5
    2022/2/15
    F5ネットワークスジャパン合同会社

    View Slide

  22. ©2022 F5
    22
    NGINX Plus R26 の新機能
    JSON KeyキャッシングによるJWT検証の高速化
    • JSON Web Key Set (JWKS)のインメモリキャッシュを導入, JWT検証のオーバーヘッドを大幅に削減.
    NGINX JavaScriptモジュールの機能強化
    • async, awaitキーワード, Promiseオブジェクトサポート, WebCrypto APIによる新しい暗号機能の追加.
    https://www.nginx.com/blog/nginx-plus-r26-released/
    TLSハンドシェイクの強化
    • Stream用のALPNサポートが強化されました.

    View Slide

  23. ©2022 F5
    23
    NGINX Plus R26 の変更点
    https://www.nginx.com/blog/nginx-plus-r26-released/
    NGINX JavaScpriptモジュール変更点
    • js_include が削除され js_import に置き換わりました.
    Cookie-Flagモジュールについて
    • サードパーティのCookie-FlagモジュールはNGINX Plus R23で非推奨となり、
    NGINX Plus R26の動的モジュールのリポジトリから削除されました.
    set_cookie_flag は proxy_cookie_flags に置き換えが可能です.
    TLSネゴシエーション NPNプロトコルのサポート終了
    • TLS及びHTTP/2接続確立にはRFC 7301 Application Layer Protocol Negotiation (ALPN) の利用を推奨します.

    View Slide

  24. ©2022 F5
    24
    NGINX Plus R26 の変更点
    https://www.nginx.com/blog/nginx-plus-r26-released/
    NGINX Plusソフトウェアリポジトリについて
    • R24リリース時にリポジトリが再編成され NGINX Plusインストール手順が変更されました.
    plus-pkgs.nginx.com から pkgs.nginx.com を参照する必要があります.
    • 参考URL: https://support.f5.com/csp/article/K01118005

    View Slide

  25. ©2022 F5
    25
    NGINX Plus R26 のその他 機能強化
    https://www.nginx.com/blog/nginx-plus-r26-released/
    IBM Z (s390x) アーキテクチャーのサポート
    • CentOS 8.1 +、RHEL8.1、Ubuntu 20.04を搭載したIBM Z(s390x)アーキテクチャでNGINX Plusをサポート
    StreamモジュールでのTCP Half Closeサポート
    • 新しいproxy_half_closeディレクティブにより利用可能
    PCRE2ライブラリのサポート
    • Perl互換正規表現 PCREとPCRE2を両方サポートするようになりました

    View Slide

  26. ©2022 F5
    26
    NGINX Plus R26 でのサポートシステムの変更
    • サポートシステム
    • Alpine Linux 3.12, 3.13, 3.14, 3.15
    • Amazon Linux 2 LTS
    • CentOS 7.4+, 8.1+ (aarch64, x86_64, ppc64le, s390x)
    • Debian 10, 11 (aarch64, x86_64)
    • FreeBSD 12.1+, 13(amd64)
    • Oracle Linux 7.4+
    • RHEL 7.4+, 8.1+
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 18.04 LTS, 20.04LTS (aarch64, x86_64, s390x)
    • サポート終了
    • Alpine Linux 3.11

    View Slide

  27. ©2022 F5
    27
    JSON Key キャッシングによる高速なJWT検証
    • JSON Web Tokenを検証する場合、NGINXは JSON Web Key Set (JWKS)を使用してTokenの署名を
    検証や復号化します。JWKSは、構成ファイルに保存やHTTPリクエストを介して外部サービスから
    取得することも可能です。JWKSをメモリにキャッシュするといくつかの利点があります。
    http {
    server {
    listen 127.0.0.1:8080;
    auth_jwt "closed site";
    auth_jwt_key_cache 12h;
    auth_jwt_key_file conf.d/jwk.json;
    location / {
    proxy_pass http://my_backend;
    }
    }
    }
    • CPU使用率の大幅な削減
    • リクエスト待ち時間の短縮
    • キャッシュ処理の一環として JWKSキーがJSON形式からバイナリ形式に変換しJWT検証の最適化
    JWKSをメモリにキャッシュするには、auth_jwt_key_cache ディレクティブで有効期限を指定します。

    View Slide

  28. ©2022 F5
    28
    JSON Key キャッシングによる高速なJWT検証
    • JWKSを外部サーバーから取得する場合には、NGINX標準のコンテンツキャッシュ機能を利用すること
    推奨します。proxy_cache_use_stale ディレクティブはJWKSリフレッシュ中に期限切れのJWKSを引き
    続き利用するようNGINX Plusに指示することができます。
    http {
    proxy_cache_path /var/cache/nginx/jwk levels=1 keys_zone=jwk:64k max_size=1m;
    server {
    listen 127.0.0.1:8080;
    auth_jwt "closed site";
    auth_jwt_key_cache 3h;
    auth_jwt_key_request /_jwks_uri;
    location / {
    proxy_pass http://my_backend;
    }
    location = /_jwks_uri {
    internal;
    proxy_cache jwk; # Cache the JWK Set recieved from IdP
    proxy_cache_valid 200 12h; # How long to consider keys "fresh"
    proxy_cache_use_stale error timeout updating; # Use old JWK Set if cannot reach IdP
    proxy_ssl_server_name on; # For SNI to the IdP
    proxy_method GET; # In case client request was non-GET
    proxy_set_header Content-Length ""; # ''
    proxy_pass https://idp-jwk-endpoint;
    proxy_ignore_headers Cache-Control Expires Set-Cookie; # Does not influence caching
    }
    }
    }

    View Slide

  29. ©2022 F5
    29
    JSON Key キャッシングによる高速なJWT検証
    • JWKSキャッシングに加えてコンテンツキャッシング利用の利点は2つあります。
    • 復元力
    JWKSは有効期限が切れている場合でもキャッシュから取得できます。
    これにより、JWKSプロバイダーが利用できなくなった場合にも活用できますが
    セキュリティリスクが高まるというトレードオフがあります。
    • 認証サーバーへの影響
    キャッシュされたJWKSの有効期限は、JWKSキャッシングとコンテンツキャッシングを組み合わせるか
    によって認証サーバーに異なる影響を与えます。
    JWKSキャッシュグのみの場合、期限切れのJWKSの新しいバージョンがキャッシュされるまで
    全ての認証リクエストが認証サーバーに転送されます。認証サーバーの応答が遅いJWKSに対して
    HTTPリクエストが増加しますので認証サービスの負荷を上げる可能性があります。
    コンテンツキャッシュが有効になっている場合、JWKSに対する1つのリクエストが認証サーバに
    転送され、コンテンツキャッシュに保存されるまで後続のリクエストはキューに入れられます。
    これにより認証サービスの負荷が低下します。

    View Slide

  30. ©2022 F5
    30
    JSON Key キャッシングによる高速なJWT検証
    • JWKSキャッシングに加えてコンテンツキャッシング利用の利点は2つあります。
    • 復元力
    JWKSは有効期限が切れている場合でもキャッシュから取得できます。
    これにより、JWKSプロバイダーが利用できなくなった場合にも活用できますが
    セキュリティリスクが高まるというトレードオフがあります。
    • 認証サーバーへの影響
    キャッシュされたJWKSの有効期限は、JWKSキャッシングとコンテンツキャッシングを組み合わせるか
    によって認証サーバーに異なる影響を与えます。
    JWKSキャッシュグのみの場合、期限切れのJWKSの新しいバージョンがキャッシュされるまで
    全ての認証リクエストが認証サーバーに転送されます。認証サーバーの応答が遅いJWKSに対して
    HTTPリクエストが増加しますので認証サービスの負荷を上げる可能性があります。
    コンテンツキャッシュが有効になっている場合、JWKSに対する1つのリクエストが認証サーバに
    転送され、コンテンツキャッシュに保存されるまで後続のリクエストはキューに入れられます。
    これにより認証サービスの負荷が低下します。

    View Slide

  31. ©2022 F5
    31
    強化されたTLSハンドシェイク
    • ALPACA攻撃などのTLSに対する攻撃が増加しています。脆弱性から積極的に防御する取り組みとして
    NGINXよるTLS接続の処理を強化しました。
    • Application Layer Protocol Negotiation (ALPN) は、TLSハンドシェイクのオプションの拡張機能であり
    TLSハンドシェイク中にクライアントとサーバーが確立する暗号化セッションで利用されるL7プロトコル
    を選択するために使用されます。ALPNの最も一般的な使用例は、HTTP/1.xからHTTP/2へアップグレード
    ネゴシエーションをすることです。

    View Slide

  32. ©2022 F5
    32
    強化されたTLSハンドシェイク
    • NGINX Plusは、クライアントと確立されているセッションのNGINXコンフィグコンテキストと
    一致しないプロトコルをALPN経由で提案があった場合、TLSハンドシェイクを拒否するようになりました。
    例えば、NGINX httpコンテキストで定義されたバーチャルサーバーにはHTTP ALPNプロトコルIDが
    必要となり、mailコンテキストの場合にはSMTP、POP、IMAPのプロトコルIDが必要となります。
    • NGINX Plus R26の $ssl_alpn_protocol で、ネゴシエートされたプロトコルをキャプチャするための
    変数が同導入されています。
    このコンフィグでは、アクセスログエントリにALPN変数を含めることが可能です。
    log_format alpn '$time_iso8601 client=$remote_addr method=$request_method '
    'uri=$request_uri status=$status alpn=$ssl_alpn_protocol';
    server {
    listen 443 ssl http2;
    ssl_certificate /etc/ssl/www.example.com.crt;
    ssl_certificate_key /etc/ssl/www.example.com.key;
    root /usr/share/nginx/html;
    access_log /var/log/nginx/access.log alpn;
    }

    View Slide

  33. ©2022 F5
    33
    強化されたTLSハンドシェイク
    • コンテキスト内の新しい ssl_alpn ディレクティブはNGINX Plusが受け入れるプロトコルを定義します。
    新しいクライアントによって提示されたプロトコルをNGINX Plusが考慮するようになります。
    stream {
    upstream filer {
    server 10.0.0.100:990;
    server 10.0.0.110:990;
    }
    server {
    listen 990 ssl;
    ssl_certificate /usr/local/nginx/conf/cert.pem;
    ssl_certificate_key /usr/local/nginx/conf/cert.key;
    proxy_pass filer;
    ssl_alpn ftp; # Accept only ALPN/FTP connections
    }
    }

    View Slide

  34. ©2022 F5
    34
    NGINX JavaScriptモジュールの強化
    NGINX JavaScriptモジュール(njs)がバージョン0.7.2に更新され、機能拡張が行われました
    • ECMA Script 6で導入された async と await キーワードと Promise オブジェクトの非同期関数サポート
    • WebCrypto APIの実装
    WebCryptoAPIを使用した新しい暗号化関数
    • NGINX JavaScriptは、WebCryptoAPIを介して拡張暗号化機能にアクセスできるようになりました。
    一般的なNGINX Java Script暗号化のユースケースは次の通りです。
    • 安全なセッションIDの乱数生成
    • メッセージ、データ、及びCookieの暗号化と復号化
    • デジタル署名の作成または検証

    View Slide

  35. ©2022 F5
    35
    NGINX JavaScriptモジュールの強化
    require('crypto');
    function random(r) {
    const buffer = crypto.getRandomValues(new Uint32Array(8));
    return r.return(200, buffer.toString());
    }
    export default { random }
    js_import conf.d/random_number.js;
    server {
    listen 80;
    location / {
    js_content random_number.random;
    }
    }
    NGINXからの呼び出し
    $ curl 127.0.0.1
    23225320050,3668407277,1101267190,2061939102,2687933029,2361833213,32543985,4162087386
    出力結果
    WebCryptoの getRandomValues関数は安全な乱数とWebCrypto全般を使い始めるための
    エントリーポイントです。関数は非常にシンプルで直接結果を返します。

    View Slide

  36. ©2022 F5
    36
    NGINX JavaScriptモジュールの強化
    async function host_hash(r) {
    let hash = await crypto.subtle.digest('SHA-512', r.headersIn.host);
    r.setReturnValue(Buffer.from(hash).toString('hex'));
    }
    export default { host_hash }
    js_import host from conf.d/host.js;
    js_set $hosthash host.host_hash;
    server {
    listen 80;
    location / {
    return 200 $hosthash;
    }
    }
    より強力な暗号化関数は非同期で動作するものがあります。crypto.subtle.diges関数を呼び出すと、
    非同期関数でラップされない限り利用可能であることは保証されません。
    ayncと awaitキーワードを使用して関数をラップしハッシュ変数に結果が格納されるようにします。
    NGINXからの呼び出し
    curl -H "Host: example.com" 127.1
    #
    e8e624a82179b53b78364ae14d14d63dfeccd843b026bc8d959ffe0c39fc4ded1f4dcf4c8ebe871e657a12db6f11c
    3af87c9a1d4f2b096ba3deb56596f06b6f4
    出力結果

    View Slide

  37. NGINX Plus Release 27 (R27)
    NGINX open source build 1.21.6
    2022/06/28
    F5ネットワークスジャパン合同会社

    View Slide

  38. ©2022 F5
    38
    NGINX Plus R27 の新機能
    Active Health Check用のKeepAliveコネクション
    • Upstreamサーバの数が多い場合に接続を再利用することでCPU利用率を大幅に削減できます.
    NGINX Plus REST API version 8 - SSL統計情報の強化
    • HTTP/Stream Upstreamとserver zoneで情報を取得できるようになりました.
    https://www.nginx.com/blog/nginx-plus-r27-released/
    Kernel TLS 対応
    • FreeBSD 13, RHEL 9.0+, Ubuntu 22.04 LTSでkTLSをサポート

    View Slide

  39. ©2022 F5
    39
    NGINX Plus R27 の新機能
    JWT検証時のerrorコードカスタマイズ
    • auth_jwt_requireディレクティブにerrorパラメータを追加.
    https://www.nginx.com/blog/nginx-plus-r27-released/
    Prometheus-njs-moduleの強化
    • NGINX Plus REST API version 7をサポート
    • upstream/server/location zoneのHTTPステータスコード
    • /stream/limit_conns, /http/limit_conns/, /http/limit_req/ データ対応

    View Slide

  40. ©2022 F5
    40
    NGINX Plus R27 でのサポートシステムの変更
    • サポートシステム
    • Alpine Linux 3.13, 3.14, 3.15, 3.16
    • Amazon Linux 2 LTS
    • CentOS 7.4+ (aarch64, x86_64)
    • Debian 10, 11 (aarch64, x86_64)
    • FreeBSD 12.1+, 13 (amd64)
    • Oracle Linux 7.4+, 8.1+ (x86_64, aarch64)
    • RHEL 7.4+, 8.1+, 9.0+ (aarch64, x86_64, s390x)
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 18.04 LTS, 20.04 LTS, 22.04 LTS (aarch64, x86_64, s390x)
    • サポート終了
    • Alpine Linux 3.12
    • CentOS 8
    • Power 8アーキテクチャ
    • Debian 10は次期バージョンでサポート終了予定
    https://docs.nginx.com/nginx/technical-specs/

    View Slide

  41. ©2022 F5
    41
    Active Health Check用のKeepAliveコネクション
    • 以前までのリリースではAcitve Health Checkにて都度接続を行っておりリソースに負担をかける
    可能性があります. Active Health Check用のアップストリームサーバー間のKeepAlive接続により、
    リバースプロキシと負荷分散のユースケースのパフォーマンスが大幅に向上します.
    http {
    upstream backend {
    zone backend 1m;
    server 10.0.0.1;
    server 10.0.0.2;
    }
    server {
    location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass https://backend;
    health_check keepalive_time=60s interval=1s;
    }
    }
    }
    • HTTPS経由のプロキシの場合には大幅にCPU負荷削減
    • health_checkディレクティブに keepalive_time を追加することで有効

    View Slide

  42. ©2022 F5
    42
    Kernel TLSのサポート
    • Kernel TLS(kTLS)を実装すると、ユーザースペースとカーネル間のコピー操作
    の必要性が大幅に減少するため、静的コンテンツを提供する際のパフォーマン
    スが向上します。
    • FreeBSD13, Ubuntu 22.04, RHEL 9+でサポート
    • OpenSSL 3.0+暗号化ライブラリを利用
    • NGINX PlusはOpenSSL 3.0+ライブラリに対応
    http {
    sendfile on;
    server {
    listen 443 ssl;
    ssl_certificate ssl/example.crt;
    ssl_certificate_key ssl/example.key;
    ssl_conf_command Options KTLS;
    ssl_protocols TLSv1.3;
    location / {
    root /data;
    }
    }
    }

    View Slide

  43. ©2022 F5
    43
    SSL統計情報の強化 - NGINX Plus REST API
    NGINX Plusがリバースプロキシまたはロードバランサーとしてデプロイされると、NGINX Plus APIは
    各Upstream SeverとVirtual Serverのトラフィック、応答コード、及び遅延に関する豊富なメトリック
    セットを提供し、顧客がサーバーのパフォーマンスの可視化とモニタリングをできるようにします。
    /api/8/http/upstreams/upstream1/servers/0
    {
    "peers": [
    {
    "id": 0,
    "server": "127.0.0.1:8081",
    "name": "127.0.0.1:8081",
    "backup": false,
    "weight": 1,
    "state": "up",
    "active": 0,
    "ssl": {
    "handshakes": 4,
    "handshakes_failed": 0,
    "session_reuses": 2
    },
    "requests": 4,
    "header_time": 4,
    "response_time": 4,
    ...
    }
    ]
    }
    /api/8/http/server_zones/srv | jq
    {
    "processing": 0,
    "requests": 7,
    "responses": {
    "1xx": 0,
    "2xx": 7,
    "3xx": 0,
    "4xx": 0,
    "5xx": 0,
    "codes": {
    "200": 7
    },
    "total": 7
    },
    "discarded": 0,
    "received": 546,
    "sent": 1134,
    "ssl": {
    "handshakes": 7,
    "handshakes_failed": 0,
    "session_reuses": 0
    }
    }
    Upstream Server Zone

    View Slide

  44. ©2022 F5
    44
    JWT検証時のerrorコードカスタマイズ
    location / {
    auth_jwt "closed site";
    auth_jst_key_file /path/to/jwks;
    auth_jwt_require $req1 $req2 error=403; # return 403 on failure
    }
    auth_jwt_requirディレクティブでJWT検証の失敗に対して返されるエラーコードは
    常に401(Unauthorized)でした。errorパラメータを追加することで401または403に設定すること
    が可能になりました。
    例えば認証失敗(JWTが無効)と認可失敗(必須クレームがない)を区別して伝えることができます。
    エラーコードに対してカスタマイズされたページを返したりリダイレクト処理することも可能です。
    locationに複数のauth_jwt_requireディレクティブがある場合、それらは記述された順番に評価されます。
    処理は最初の失敗で停止し、指定されたエラーコードが返されます。

    View Slide

  45. ©2022 F5
    45
    NGINX JavaScript, Prometheus-njsモジュールの強化
    NGINX Plus R27には、FetchAPIの動作を微調整するための次のディレクティブが導入されています。
    • js_fetch_buffer_size – 読み取りと書き込みに使用されるバッファサイズを設定します。
    • js_fetch_max_response_buffer_size – FetchAPIで受信する応答の最大サイズを設定します。
    • js_fetch_timeout – 2つの連続する読み取りまたは書き込み操作間の読み取りと書き込みのタイムアウトを定義し
    ます(応答全体ではありません)。タイムアウト期間内にデータが送信されない場合、接続は閉じられます。
    • js_fetch_verify - HTTPSサーバー証明書の検証を有効または無効にします。
    16進数で出力されるバージョン番号
    • 新しいnjs.version_numberオブジェクトは、njsモジュールのバージョンを16進数として出力します。
    (既存のnjs.versionオブジェクトはバージョンを文字列として返します)
    Prometheus-njsモジュールが追加メトリクスに対応
    • /http/limit_conns
    • /http/limit_reqs
    • /http/server_zones, /http/upstreams, HTTPステータスコード数を出力するフィールド
    • /stream/limit_conns

    View Slide

  46. ©2022 F5
    46
    NGINX Plus R27 のその他 機能強化
    NGINXPlus APIのバージョン変更
    • バージョン番号が7から8に更新, 新しいSSL統計情報の強化が追加されています。
    Linux EPOLLEXCLUSIVE モード
    • NGINX Plus R27 は、Linux カーネルで EPOLLEXCLUSIVE モードが使用されている場合
    NGINX ワーカープロセス間でより均等に接続を分散します。

    View Slide

  47. NGINX Plus Release 28 (R28)
    NGINX open source build 1.23.2
    2022/11/29
    F5ネットワークスジャパン合同会社

    View Slide

  48. ©2022 F5
    48
    NGINX Plus R28 の新機能
    NGINX Plus 追加のTLSメトリクス
    • ハンドシェイクエラーや証明書検証の失敗が報告されるようになりました.
    NGINX Plus サポートOSの追加
    • AlmaLinux / Rockey Linux 8 および 9上でNGINX Plusインストールしていただけます.
    https://www.nginx.com/blog/nginx-plus-r28-released/
    PROXY プロトコル v2 TLVのサポート
    • AWS/GCP/Azureでのサービス固有識別子をバックエンドサービスに転送をサポート.
    Stickey Cookie パラメータ追加
    • 値や変数でSameStite属性をCookieへ追加可能になりました.

    View Slide

  49. ©2022 F5
    49
    NGINX Plus R28 でのサポートシステムの変更
    • サポートシステム
    • AlmaLinux 8, 9
    • Alpine Linux 3.13, 3.14, 3.15, 3.16, 3.17
    • Amazon Linux 2 LTS
    • CentOS 7.4+
    • Debian 11
    • FreeBSD 12.1+, 13 (amd64)
    • Oracle Linux 7.4+, 8.1+, 9.0+
    • RHEL 7.4+, 8.1+, 9.0+
    • Rocky Linux 8, 9
    • SUSE Linux Enterprise Server 12, 15 SP2
    • Ubuntu 18.04 LTS, 20.04 LTS, 22.04 LTS
    • サポート終了
    • Debian 10
    https://docs.nginx.com/nginx/technical-specs/

    View Slide

  50. ©2022 F5
    50
    NGINX Plus 追加のTLSメトリクス
    • NGINX Plus R28は, システム全体, クライアント側, およびサーバー側のレベルで追加のTLS 統計
    を収集し, プロキシ構成の SSL/TLS 関連エラーのトラブルシューティングや, クライアントおよ
    びアップストリーム サーバーへの接続に重要なモニタリングを提供します.

    View Slide

  51. ©2022 F5
    51
    NGINX Plus 追加のTLSメトリクス
    • NGINX Plus R28は, システム全体, クライアント側, およびサーバー側のレベルで追加のTLS 統計
    を収集し, プロキシ構成の SSL/TLS 関連エラーのトラブルシューティングや, クライアントおよ
    びアップストリーム サーバーへの接続に重要なモニタリングを提供します.
    $ curl 127.0.0.1:8080/api/8/ssl
    {
    "handshakes": 32,
    "session_reuses": 0,
    "handshakes_failed": 8,
    "no_common_protocol": 4,
    "no_common_cipher": 2,
    "handshake_timeout": 0,
    "peer_rejected_cert": 0,
    "verify_failures": {
    "no_cert": 0,
    "expired_cert": 2,
    "revoked_cert": 1,
    "hostname_mismatch": 2,
    "other": 1
    }
    }
    /api/8/http/server_zones/s9
    {
    ...
    "ssl": {
    "handshakes": 0,
    "session_reuses": 0,
    "handshakes_failed": 1,
    "no_common_protocol": 0,
    "no_common_cipher": 1,
    "handshake_timeout": 0,
    "peer_rejected_cert": 0,
    "verify_failures": {
    "no_cert": 0,
    "expired_cert": 0,
    "revoked_cert": 0,
    "other": 0
    }
    }
    }
    /api/8/http/upstreams/u2
    {
    "peers": [
    {
    "id": 0,
    "server": "127.0.0.1:8082",
    "name": "127.0.0.1:8082",
    ...
    "ssl": {
    "handshakes": 1,
    "session_reuses": 0,
    "handshakes_failed": 0,
    "no_common_protocol": 0,
    "handshake_timeout": 0,
    "peer_rejected_cert": 0,
    "verify_failures": {
    "expired_cert": 1,
    "revoked_cert": 0,
    "hostname_mismatch": 0,
    "other": 0
    }

    View Slide

  52. ©2022 F5
    52
    NGINX Plus 追加のTLSメトリクス
    • NGINX Plus R28は, システム全体, クライアント側, およびサーバー側のレベルで追加のTLS 統計
    を収集し, プロキシ構成の SSL/TLS 関連エラーのトラブルシューティングや, クライアントおよ
    びアップストリーム サーバーへの接続に重要なモニタリングを提供します.
    • NGINX Plus のREST APIとライブアクティビティモニタリングダッシュボードが更新され
    下記の新しい SSL セッション データが表示されます.
    − handshake_timeout – ハンドシェイク タイムアウトによるハンドシェイク失敗の数
    − no_common_cipher – ハンドシェイクの当事者間で共通の暗号がないために失敗したハンドシェイクの数
    (アップストリーム サーバーへの接続については適用されないため収集されません)
    − no_common_protocol – 当事者間に共通のプロトコルがないために失敗したハンドシェイクの数
    − peer_rejected_cert – 相手がNGINX Plusによって提示された証明書を拒否し、適切な警告メッセージを提供したために失敗したハンドシェイクの数
    − ssl_verify_client[ HTTP ][ Stream ] ディレクティブを使用したクライアントへの接続用
    − プロトコル固有のディレクティブを使用したサーバーへの接続の場合:
    − grpc_ssl_verify
    − proxy_ssl_verify[ HTTP ][ STREAM ]
    − uwsgi_ssl_verify
    − expired_cert – ピアが期限切れの証明書を提示
    − hostname_mismatch – サーバーの証明書がホスト名と一致しない (クライアントへの接続用に収集されない)
    − no_cert – クライアントは必要に応じて証明書を提供しませんでした (アップストリーム サーバーへの接続のために収集されませんでした)
    − revoked_cert – ピアが失効した証明書を提示
    − other – 他の証明書検証の失敗に対する明示的なカウンター

    View Slide

  53. ©2022 F5
    53
    Cloud Private Services での PROXY Protocol v2 TLV のサポート
    • アマゾン ウェブ サービス (AWS)、Google クラウド プラットフォーム (GCP)、および Microsoft Azure の
    3 つの主要なクラウド プロバイダーは、それぞれ「プライベート サービス」を提供しており、外部クライ
    アントをインターネットに公開することなくサービスアクセスできるようにすることができます。
    • 各サービスは、PROXY プロトコル v2 ヘッダーのType-Length-Value (TLV)ベクトルで表されるクライアント
    識別子を使用します。サービス固有の識別子は次のとおりです。
    • AWS プライベートリンク –PP2_SUBTYPE_AWS_VPCE_ID
    • GCP プライベート サービス コネクト –pscConnectionId
    • Microsoft Azure プライベート リンク –PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID
    フィールド 長さ (オクテット) 説明
    タイプ 1 PP2_TYPE_AWS( 0xEA)
    長さ 2 値の長さ

    1 PP2_SUBTYPE_AWS_VPCE_ID( 0x01)
    さまざま (値の長さから 1 を引いた
    値)
    エンドポイントの ID
    AWS の PROXY プロトコル v2

    View Slide

  54. ©2022 F5
    54
    Cloud Private Services での PROXY Protocol v2 TLV のサポート
    • アマゾン ウェブ サービス (AWS)、Google クラウド プラットフォーム (GCP)、および Microsoft Azure の
    3 つの主要なクラウド プロバイダーは、それぞれ「プライベート サービス」を提供しており、外部クライ
    アントインターネットに公開することなくサービスアクセスできるようにすることができます。
    map $proxy_protocol_tlv_aws_vpce_id $not_allowed_vpc_id {
    "12341234" 0;
    "12345678" 0;
    default 1;
    }
    server {
    listen 127.0.0.1:8080 proxy_protocol;
    location / {
    if ($not_allowed_vpc_id) {
    return 401;
    }
    add_header X-AWS-VPC-LINK-ID $proxy_protocol_tlv_aws_vpce_id;
    proxy_pass http://u;
    }
    }
    NGINX Plus R28は TLV をデコードし、エンドポイント ID を変数でバックエンド アプリケーションに
    $proxy_protocol_tlv_aws_vpce_id で渡します。

    View Slide

  55. ©2022 F5
    55
    Sticky Cookie samesite パラメータ
    以前のNGINX Plus リリースでは、stickeyディレクティブのパラメータとして 3 つの静的値
    ( strict、lax、およびnone) を使用できました。NGINX Plus R28では セキュリティレベルの高さの指定を
    値や変数して指定することができます。
    http {
    map $http_user_agent $samesite {
    "user-agent-1" "lax";
    "user-agent-2" "";
    }
    upstream u {
    server 127.0.0.1:8081;
    sticky cookie sticky secure samesite=$samesite path=/test;
    }
    server {
    listen 127.0.0.1:8080;
    server_name localhost;
    location / {
    proxy_pass http://u;
    }
    }
    }

    View Slide

  56. ©2022 F5
    56
    NGINX Plus R28 のその他 機能強化
    NGINX OSSから継承されたバグフィックスが含まれています
    • ipv4=off HTTPディレクティブの新しいパラメーターresolverは、IPv4アドレス検索を無効にします。
    • sharedディレクティブのパラメーターを使用して HTTP セッション情報の共有キャッシュを有効にすると
    ssl_session_cache、TLS セッション チケット キーが自動的にローテーションされるようになりました。
    • TLS/SSL エラーがログに記録される重大度レベルがcritからinfoに引き下げられました。
    NGINX JavaScript Module
    • NGINX Plus R28には、NGINX JavaScript モジュール (njs) のバージョン 0.7.5 から 0.7.8 で行われた変更
    と修正が組み込まれています。

    View Slide

  57. View Slide