アップデート情報

NGINX R17がリリースされました

こんにちわ、サイオステクノロジーの原です。

2018年12月11日にNGINX Plus R17がリリースされました。
今回のリリースではTLS1.3のサポート、レート制限のメソッド追加、stream/zone_syncモジュールの更新となります。

以下、詳細を和訳し記載します。

——————————————————————————————————————————————–

  • ssl_protocolsディレクティブのTLSv 1.3パラメータを用いたTLS1.3のサポート 
  • 2段階レート制限のサポート。過度のリクエストに対して最初に遅延しつつ、最終的には拒否されます。
  • JSON Webトークン(JWT)モジュールへのEd25519およびEd448暗号アルゴリズムのサポートが追加されました。
  • auth_jwt_key_requestディレクティブでOpenID Connectを使用している場合、アイデンティティプロバイダ(IdP)から直接JSON Webキー(JWK)を取得する機能を追加されました。
  • 新しいproxy_socket_keepaliveディレクティブにより、NGINX Plusとプロキシされたサーバの間でTCP keepaliveを有効にすることができます
  • keepalive_timeoutディレクティブは、アイドル状態のHTTPキープアライブ接続がNGINX Plusとプロキシされたサーバ間で開いたままになる時間を制御します
  • streamモジュールのproxy_requestsディレクティブは、そのサーバへの新しいUDP「セッション」を開始する前に、NGINX Plusからプロキシされたサーバに送信されるパケットの数を定義します
  • zone_syncモジュールは、zone_sync_ssl_server_nameディレクティブを使用してサーバー名検証のためのクラスタノードに接続するときにSNIを使用してサーバー名を渡すことができるようになりました

    以下、NGINX Java Scriptモジュールが更新されました。

    • 引数オブジェクトのサポート
    • 非整数分数のサポート
    • 追加時間メソッドのサポート:console.time()およびconsole.timeEnd()
    • 変数と関数を再宣言出来るようになりました。
    • TCP/UDPアプリケーション用のNGINX streamモジュールとの統合は入力トラフィック変更するためのsend()メソッドなど、様々なreturn関数を使用出来るようにリファクタリングされました。また出力トラフィックはコールバックを介して利用できるようになりました。

——————————————————————————————————————————————–

以下、原文を記載します。

——————————————————————————————————————————————–

NGINX open source build 1.15.7, 11 December 2018

NGINX Plus R17 is a feature release:

  • Support for TLS 1.3 using TLSv1.3 parameter to ssl_protocols directive
  • Support for two stage rate limiting with the new delay= parameter; excessive requests are initially delayed and then ultimately rejected
  • Added support for the Ed25519 and Ed448 cryptographic algorithms to the JSON Web Token (JWT) module
  • Ability to fetch JSON Web Keys (JWK) directly from identity provider (IdP) when using OpenID Connect with the new auth_jwt_key_request directive
  • New proxy_socket_keepalive directive allows TCP keepalives to be enabled between NGINX Plus and the proxied server
  • New keepalive_timeout directive controls how long an idle HTTP keepalive connection will stay open between NGINX Plus and the proxied server
  • New proxy_requests directive for the stream module defines how many packets will be sent from NGINX Plus to the proxied server before starting a new UDP “session” to that server
  • The zone_sync module can now pass the server name using SNI when connecting to cluster nodes for server name verification with new zone_sync_ssl_server_name directive
  • The NGINX JavaScript module has been updated:
    • Support for arguments objects
    • Support for non-integer fractions
    • Support for additional time methods: console.time() and console.timeEnd()
    • Variables and functions can now be redeclared
    • Integration with the NGINX Stream module for TCP/UDP applications has been refactored to use various return functions, including a send() method for modifying ingress traffic. Egress traffic is now available through a callback.

——————————————————————————————————————————————–

11/14(水)、NGINX MeetUp Tokyo #1 を開催します!

前回のMeetUp #0に続き、11/14(水)にNGINX MeetUp Tokyo #1 を開催します。

概要

日本のNGINXユーザー、また関心をお持ちの方に向けてNGINX最大のイベント NGINX .conf 2018 の最新情報とWeb Application Firewall機能のNGINX WAFをご紹介します。2つのセッションとセッション終了後には懇親会を用意しておりますので、NGINXを利用する方同士での交流もいただける場になっています。

これからNGINXを使ってみたいという方も、NGINXを使いこなしている方も、NGINXにご興味をお持ちの方、NGINXが大好きなかたまで皆様のご参加をお待ちしております。

なお、Meetupの内容は後日動画配信を予定しております。遠方の方は配信動画の公開をお待ち下さい。 NGINX MeetUp Japanのグループ登録も合わせてよろしくおねがいします!!

プログラム

  • 16:30~    受付

  • 17:00~17:10 オープニング & NGINX Meetup Japan 立ち上げについて

  • 17:10~17:40 講演1 NGINX .conf 2018最新情報

    概要:サイオステクノロジーの原尚史が、アトランタで2018年10月6日〜8日に開催されたNGINX .conf 2018 の最新情報をお伝えします。
    現地で入手したNGINXの最新情報をどこよりも早くお伝えいたします。 

    講師:サイオステクノロジー株式会社 イノベーティブソリューション事業企画部 原 尚史

  • 17:40~18:10 講演2 NGINX WAFについて

    概要:サイオステクノロジーのセキュリティエヴァンジェリスト 面 和毅が、NGINX WAFについてご紹介します。
    コミュニティ版とPlus製品の違いを含めてご紹介予定です。 

    講師:サイオステクノロジー株式会社 セキュリティエヴァンジェリスト 面 和毅

  • 18:10~19:00 懇親会 NGINX ノベリティ抽選会!!

※講演資料は本サイトにて後日公開予定です。

イベント参加について

以下URLよりお願い致します。

【申し込みURL】

https://nginx-mj.connpass.com/event/103617/

nginx 1.15.4と1.15.5がリリースされました。

こんにちは、サイオステクノロジーの原です。

nginx.orgで2018年9月25日に1.15.4、2018年10月2日に1.15.5が公開されました。
今回のバージョンアップではSSL関連のディレクティブ機能拡充、ワーカープロセス・gRPC・error_pageディレクティブ関連のバグ修正が含まれています。

以下、リリース内容の詳細を参考訳として記載します。

nginx 1.15.4 リリース内容

<機能追加>
*)”ssl_early_data”ディレクティブでOpenSSLを使用可能。

<バグ修正>

*)ngx_http_uwsgi_moduleのバグ修正。Chris Caputoさん、ありがとう。

*)keepaliveディレクティブ文を使用すると、いくつかのgRPCバックエンドとの接続はキャッシュされない可能性があった。

*)”error_page”ディレクティブを使用して初期要求処理エラー(特にコード400のエラー)をリダイレクトすると、ソケットリークが発生することがあった

*)リクエストが “error_page”指示でリダイレクトされた場合、エラーを返すときに “return”ディレクティブ文は応答コードを変更しなかった。

*)標準エラーページとngx_http_autoindex_moduleモジュールの応答では、”bgcolor”属性が使用され、ブラウザでカスタムカラー設定を使用すると
   誤って表示されることがある。Nova DasSarmaさん、ありがとう。

<仕様変更>

*) “no suitable key share”および”no suitable signature algorithm”のSSLエラーのログレベルが「crit」から「info」に下げられました。

nginx 1.15.5 リリース内容

<バグ修正>

*)OpenSSL 1.1.0h以降を使用している場合、ワーカープロセスでセグメンテーションエラーが発生する可能性があった。バグは1.15.4でも発生していた。

*)潜在的なバグ修正。

 

【参考URL】

http://nginx.org/en/CHANGES

nginx 1.15.2リリース

2018年7月24日にコミュニティ版ホームページ(nginx.org)で1.15.2が公開されました。

以下にリリース内容の参考訳を記載します。

nginx 1.15.2 リリース内容

<機能追加>
1.ngx_stream_ssl_preread_module.に$ssl_preread_protocol変数が追加されました。

2.”reset_timeout_connection”ディレクティブを使用した時、nginxの接続は444コードでリセット
  することが可能です。

<仕様変更>
1.”httpリクエスト”、”httpsプロキシリクエスト”、”サポートされていないプロトコル”、
  ”バージョンが低い” SSLエラーのログレベルが “crit”から “info”に下げられました。

<バグ修正>
1.最初のリクエスト送信が失敗した場合、DNSリクエストは再送信されませんでした。

2. “listen”ディレクティブの後にワーカープロセスの数が指定された場合、 “listen”ディレクティブの “reuseport”パラメータは無視されてました。

3.OpenSSL 1.1.0以降を使用している場合、仮想サーバがデフォルトサーバで有効になっている場合、仮想サーバの「ssl_prefer_server_ciphers」をオフにすることはできませんでした。

4.アップストリームサーバーとのSSLセッションの再利用は、TLS 1.3プロトコルでは機能しませんでした。

*) Feature: the $ssl_preread_protocol variable in the ngx_stream_ssl_preread_module.
*) Feature: now when using the “reset_timedout_connection” directive nginx will reset connections being closed with the 444 code.
*) Change: a logging level of the “http request”, “https proxy request”, “unsupported protocol”, and “version too low” SSL errors has been lowered from “crit” to “info”.
*) Bugfix: DNS requests were not resent if initial sending of a request failed.
*) Bugfix: the “reuseport” parameter of the “listen” directive was ignored if the number of worker processes was specified after the “listen” directive.
*) Bugfix: when using OpenSSL 1.1.0 or newer it was not possible to switch off “ssl_prefer_server_ciphers” in a virtual server if it was switched on in the default server.
*) Bugfix: SSL session reuse with upstream servers did not work with the TLS 1.3 protocol.

 

本ブログサイトの”ホワイトペーパー一覧”ページにeBOOKを公開致しました。
https://nginx.sios.jp/white-paper

nginx 1.15.1リリース

2018年7月3日にコミュニティ版ホームページ(nginx.org)で1.15.1が公開されました。

以下にリリース内容の参考訳を記載します。

nginx 1.15.1 リリース内容

<機能追加>
1.”upstream”ブロック内に”random”ディレクティブの記述が可能になりました。

2.”zone”ディレクティブで”hash”と “ip_hash”ディレクティブを使用する時のパフォーマンス改善を行ないました。

3.FreeBSD 12のSO_REUSEPORT_LBで”listen”ディレクティブの “reuseport”パラメータが使用出来るようになりました。

<バグ修正>
1.フロントのnginxプロキシ―サーバーでSSLが終了した場合、HTTP / 2サーバープッシュは機能しませんでした。

2. “tcp_nopush”は常にバックエンドに接続されていました 。

3.ディスクバッファリングされたリクエストボディをgRPCバックエンドに送信失敗していました。

   *) Feature: the “random” directive inside the “upstream” block.

    *) Feature: improved performance when using the “hash” and “ip_hash”
       directives with the “zone” directive.

    *) Feature: the “reuseport” parameter of the “listen” directive now uses
       SO_REUSEPORT_LB on FreeBSD 12.

    *) Bugfix: HTTP/2 server push did not work if SSL was terminated by a
       proxy server in front of nginx.

    *) Bugfix: the “tcp_nopush” directive was always used on backend
       connections.

    *) Bugfix: sending a disk-buffered request body to a gRPC backend might
       fail.

 

本ブログサイトの”ホワイトペーパー一覧”ページにeBOOKを公開致しました。
https://nginx.sios.jp/white-paper

nginx 1.15.0 リリース

2018年6月5日にコミュニティ版ホームページ(nginx.org)で1.15.0が公開されました。
nginx 1.15.0ではsslディレクティブの仕様変更、streamモジュールの機能追加、また構築に関わる不具合修正をメインにリリースされた内容となっています。

以下にリリース内容の参考訳を記載します。

nginx 1.15.0 リリース内容

<変更点>
1.sslディレクティブを廃止。今後はlistenディレクティブ内にsslパラメーターを定義する必要があります。

2. “listen”ディレクティブの “ssl”パラメータを使用しているときに設定テスト中に欠落しているSSL証明書を検出します。

 

<機能>
1.単一セッション内でのクライアントからのデータグラムをstreamモジュールにより
複数の着信UDPを処理出来るようになりました。

 

<不具合修正>

1.”proxy_cache_valid”ディレクティブ内で不正な応答コードを指定出来ました。

2.ggin 8.1でnginxを構築できませんでした。

3.ローカルIPアドレスの変更でsyslogへのロギングが停止されました。

4.CUDA SDKがインストールされた状態でnginxを構築することはできませんでした。(1.13.8から発生)

5.Fedora 28 Linuxではnginxを構築できませんでした。

6.FreeBSD上でUNIXドメイン listen socketを使用している場合、バイナリアップグレード中に
“getsockopt(TCP_FASTOPEN)…失敗”メッセージが表示され、ログに記録されていました。

7. “limit_req”ディレクティブを使用したとき、リクエスト処理速度が設定された速度を
超える場合がありました。

8.Linux上でデータグラムを処理するunix domain listenソケットを使っているときの
クライアントアドレスのハンドリング処理を修正しました。

9.メモリー割り当てエラーハンドリング処理を修正しました。

 

*) Change: the “ssl” directive is deprecated; the “ssl” parameter of the “listen” directive should be used instead.
*) Change: now nginx detects missing SSL certificates during configuration testing when using the “ssl” parameter of the “listen” directive.
*) Feature: now the stream module can handle multiple incoming UDP datagrams from a client within a single session.
*) Bugfix: it was possible to specify an incorrect response code in the “proxy_cache_valid” directive.
*) Bugfix: nginx could not be built by gcc 8.1.
*) Bugfix: logging to syslog stopped on local IP address changes.
*) Bugfix: nginx could not be built by clang with CUDA SDK installed; the bug had appeared in 1.13.8.
*) Bugfix: “getsockopt(TCP_FASTOPEN) … failed” messages might appear in logs during binary upgrade when using unix domain listen sockets on FreeBSD.
*) Bugfix: nginx could not be built on Fedora 28 Linux.
*) Bugfix: request processing rate might exceed configured rate when using the “limit_req” directive.
*) Bugfix: in handling of client addresses when using unix domain listen sockets to work with datagrams on Linux.
*) Bugfix: in memory allocation error handling.

nginx 1.13.5 リリース

2017年9月5日に nginx 1.13.5 が公開されました。本記事ではこのリリースバージョンに関する変更点をご案内します。
 

nginx 1.13.5 のリリースでは ssl_client_exxcaped_cert が追加された他、バグ修正が中心に変更が行なわれています。以下にリリース内容の参考訳を記載します。

nginx 1.13.5 リリース内容

  • 機能追加:$ ssl_client_escaped_cert 変数の追加
  • バグ修正: “ssl_session_ticket_key” ディレクティブと “geo” ディレクティブの “include” パラメータはWindowsでは動作しませんでした。
  • バグ修正:複数の範囲で4ギガバイトを超えるリクエストをしたときに、32ビットプラットフォームでは誤ったレスポンスが返されました。
  • バグ修正:キャッシュなしのプロキシを使用した場合、 “expires modified” ディレクティブと “If-Range” リクエストヘッダ行の処理では、最後の変更時の応答は使用されませんでした。
Changes with nginx 1.13.5                     05 Sep 2017

*) Feature: the $ssl_client_escaped_cert variable.

*) Bugfix: the “ssl_session_ticket_key” directive and the “include” parameter of the “geo” directive did not work on Windows.

*) Bugfix: incorrect response length was returned on 32-bit platforms when requesting more than 4 gigabytes with multiple ranges.

*) Bugfix: the “expires modified” directive and processing of the “If-Range” request header line did not use the response last modification time if proxying without caching was used.

nginx 1.13.4 リリース

2017年8月8日に nginx 1.13.4 が公開されました。本記事ではこのリリースバージョンに関する変更点をご案内します。
 

nginx 1.13.4 のリリースでは新たに ngx_http_mirror_module が追加された他、バグ修正が中心に変更が行なわれています。以下にリリース内容の参考訳を記載します。

目次 [hide]

nginx 1.13.4 リリース内容

  • 機能追加:ngx_http_mirror_module
  • バグ修正:Linux上で “listen”ディレクティブの “reuseport”パラメータを使用しているとき、設定テスト中にクライアント接続が切断される可能性があります。
  • バグ修正:ファイルに保存してプロキシを使用した場合、サブリクエストでリクエスト本体を利用できないことがあります。
  • バグ修正: “max_size”パラメータに基づくキャッシュのクリーニングはWindowsでは動作しませんでした。
  • バグ修正:Windows上では4096バイトの共有メモリ割り当てを必要としていました。
  • バグ修正:Windows上の “upstream” ブロック内の “zone” ディレクティブを使用すると、nginxワーカーが異常終了することがあります。

 

Module ngx_http_mirror_module

ngx_http_mirror_moduleモジュール(1.13.4)は、バックグラウンドミラーサブリクエストを作成することによって、元のリクエストのミラーリングを実装します。 ミラーサブリクエストに対する応答は無視されます。

Example Configuration

location / {
  mirror /mirror;
  proxy_pass http://backend;
}

location /mirror {
  internal;
  proxy_pass http://test_backend$request_uri;
}

Directives

Syntax: mirror uri | off;
Default:
mirror off;
Context: httpserverlocation

元の要求をミラーリングするURIを設定します。 複数のミラーを同じレベルで指定できます。

Syntax: mirror_request_body on | off;
Default:
mirror_request_body on;
Context: httpserverlocation

クライアント要求本文がミラーリングされているかどうかを示します。 有効にすると、ミラーサブリクエストを作成する前に、クライアントリクエスト本文が読み取られます。 この場合、proxy_request_buffering、fastcgi_request_buffering、scgi_request_buffering、およびuwsgi_request_bufferingディレクティブによって設定されたバッファリングされていないクライアント要求ボディのプロキシは無効になります。

location / {
  mirror /mirror;
  mirror_request_body off;
  proxy_pass http://backend;
}
location /mirror {
  internal;
  proxy_pass http://log_backend;
  proxy_pass_request_body off;
  proxy_set_header Content-Length “”;
  proxy_set_header X-Original-URI $request_uri;
}

リリース情報原文は以下の通りです。

Changes with nginx 1.13.4                   08 Aug 2017

*) Feature: the ngx_http_mirror_module.

*) Bugfix: client connections might be dropped during configuration testing when using the “reuseport” parameter of the “listen” directive on Linux.

*) Bugfix: request body might not be available in subrequests if it was saved to a file and proxying was used.

*) Bugfix: cleaning cache based on the “max_size” parameter did not work on Windows.

*) Bugfix: any shared memory allocation required 4096 bytes on Windows.

*) Bugfix: nginx worker might be terminated abnormally when using the “zone” directive inside the “upstream” block on Windows.

nginx 1.13.3 リリース(CVE-2017-7529 対応)

2017年7月11日に nginx 1.13.3 がリリースされました。このリリースではCVE-2017-7529に対応しています。

nginx 1.13.3 リリース(CVE-2017-7529 対応)

nginx 1.13.3 がリリースされました。このリリースでは CVE-2017-7529 に対応しています。

この脆弱性では下記のレポートが公開されています。

nginxの “range filter”でセキュリティの問題が確認されました。 特別に細工された要求により、整数のオーバーフローや不正な範囲の処理が行われ、機密情報の漏洩を招く可能性があります。

標準モジュールでnginxを使用すると、キャッシュから応答が返された場合、攻撃者はキャッシュファイルヘッダを取得できます。 いくつかの構成では、キャッシュファイルヘッダは、バックエンドサーバのIPアドレスまたは他の機密情報を含むことができます。

この脆弱性が影響するバージョンは下記の範囲になります。

  • nginx 0.5.6 – 1.13.2.

 

この脆弱性問題は以下のバージョンで修正されています。

  • nginx 1.13.3, 1.12.1.

 

リリース原文は下記となります。

Changes with nginx 1.13.3                    11 Jul 2017

*) Security: a specially crafted request might result in an integer overflow and incorrect processing of ranges in the range filter, potentially resulting in sensitive information leak (CVE-2017-7529).

nginx 1.13.2 リリース

2017年6月27日に nginx 1.13.2 がリリースされました。 本記事ではこのリリース内容及び日本語参考訳を紹介します。
 

nginx 1.13.2 のリリースではバグ修正が中心に変更が行なわれています。一部の機能では応答コードに仕様変更が行なわれておりますので、該当機能をご利用の方は動作にご注意下さい。

nginx 1.13.2 リリース内容

  • 機能変更:nginx は空のファイルから ith 0 を開始する範囲が要求されたときに416ではなく200を返すようになりました。
  • 機能追加:”add_trailer” ディレクティブ。
  • バグ修正:nginxはCygwinとNetBSDで構築できませんでした。 バグは 1.13.0 以降に含まれます。
  • バグ修正:MSYS2 / MinGW 64ビットでnginxを構築できませんでした。
  • バグ修正:変数付きで多くの include と proxy_pass で SSI を使用すると、ワーカープロセスでセグメンテーションエラーが発生することがあります。
  • バグ修正:ngx_http_v2_module の修正

 

リリース情報原文は以下の通りです。

Changes with nginx 1.13.2                        27 Jun 2017

*) Change: nginx now returns 200 instead of 416 when a range starting with 0 is requested from an empty file.

*) Feature: the “add_trailer” directive. Thanks to Piotr Sikora.

*) Bugfix: nginx could not be built on Cygwin and NetBSD; the bug had appeared in 1.13.0.

*) Bugfix: nginx could not be built under MSYS2 / MinGW 64-bit. Thanks to Orgad Shaneh.

*) Bugfix: a segmentation fault might occur in a worker process when using SSI with many includes and proxy_pass with variables.

*) Bugfix: in the ngx_http_v2_module. Thanks to Piotr Sikora.