F5 BIG-IPからNGINX Plusに切り替える5つの理由

※本記事はNGINX,Inc.のブログ記事「5 Reasons to Switch from F5 BIG-IP to NGINX Plus」を和訳した内容となります。
【URL】
https://www.nginx.com/blog/5-reasons-switch-f5-big-ip-to-nginx-plus/

 

2016年、NGINX Plusの価格と性能をF5 BIG-IPアプリケーション デリバリー コントローラー(以下ADCと表記)の複数モデルと比較しました。NGINX Plusに切り替えることで、F5アプライアンスのパフォーマンスと同等、またはそれ以上のパフォーマンスを達成しながら、1年目から80%以上のコストを節約できます。

ADCをNGINX Plusに置き換える方法については、以下のリソースをご覧ください。

NGINX,INC ブログの投稿

 

 

移行ガイド

 

 

 

BIG-IP ADCは、ASICでレイヤ4のロードバランシング(英語)を行うなど、カスタムハードウェアを使っているため高価です。以前は、コモディティサーバーでは同等のプロセッサー性能を実現できないか、実現できてもはるかに高価だったため、ロードバランシング用のカスタムハードウェアは費用対効果の高い方法でした。しかし最近では、サーバーは大幅に安く、高速化しているため、いまやカスタムハードウェアは割高な選択肢になっています。

またF5は、ハードウェアアプライアンスを作ることに集中するあまり、現代的なアプリケーションのニーズ、つまりソフトウェアだけが実現できる柔軟性を取り入れませんでした。一方、NGINX Plusが提供するものは、現代のアプリケーションや今日のITインフラストラクチャー、特にクラウドDevOpsのニーズに合わせて設計された、ソフトウェアロードバランサーとアプリケーション配信プラットフォームです。ソフトウェアとしてNGINX Plusは、レイヤー7の機能と柔軟性のある現代的なアプリケーションという、開発者と運用チームが必要とするものを提供できる点で優れています。 

 

このブログ記事では、NGINX Plusの5つの固有の機能を紹介しています。これは、F5 BIG-IPのADCからは得られないものです。

  1. サービス・ディスカバリーの統合(英語)  – マイクロサービスを使用するアプリケーションは、NGINX Plusの最先端機能である、洗練されたサービス・ディスカバリー機能が必要です。
  2. 静的コンテンツの提供(英語) – F5 BIG-IPでは静的コンテンツを提供することはできませんが、NGINX Plusの核となる機能です。
  3. ARMサーバーでベアメタルを実行する(英語)  – ARMサーバーはエネルギーコストを節約します。NGINX PlusはネイティブでARM上で動作しますが、F5 BIG-IPではARMは動作しません。
  4. Dockerコンテナの中で実行(英語)  – Dockerを使うと、アプリケーションの開発、デプロイ、管理が非常に簡単になるため、急速に人気が高まっています。NGINX PlusはDockerコンテナ内でスムーズに動作します。
  5. 再起動いらずのアップグレード – アップグレードは、絶え間ない作業のように見えるかもしれません。NGINX Plusがあれば、アップグレード中でも、絶え間ないアップタイムを実現できます。

1.サービス・ディスカバリーの統合

2016年に実施した調査によると、組織の68%以上がマイクロサービスを利用または調査しています。マイクロサービスを調べると、最大の課題の1つにサービスの検出があることがわかるでしょう。マイクロサービスベースのアーキテクチャーでは、サービスにはIPアドレスとポートが動的に割り当てられます。つまり、サービスの場所は予測できません。サービスにアクセスできるようにするには、ConsuletcdZooKeeperなどの「サービスレジストリー」にIPアドレスとポートを登録する必要があります。トラフィックをサービスに送信する必要のあるクライアント(NGINX Plusなど)は、サービスレジストリーにクエリして、サービスのIPアドレスとポートを取得します。

 

NGINX Plusは、DNS SRVレコードを使って、マイクロサービス環境でサービス・ディスカバリーを実行できます

 

サービスレジストリーは、DNS SRVレコードの形式でサービスのロケーション情報を提供します。DNS SRVレコードは、動的に割り当てられるポート番号を含む点で、標準的なDNSレコードとは異なります。マイクロサービスベースのアプリケーション向けロードバランサーは、サービスレジストリーが提供するDNS SRVレコードから、IPアドレスとポート情報を抽出できる必要があります。

 

このスニペットでは、NGINX Plusがサービスレジストリーを照会し、応答されたDNS SRVレコードを解析するように設定しています。

 

resolver service-registry-address;

 

upstream my_service {

   zone backend 64k;

   server service-hostname service=http resolve;

}

 

server {

   # …

   location /my_service {

       # …

       proxy_pass http://my_service;

   }

}

 

serverディレクティブの最初のパラメーターとして、サービスのresolverディレクティブとホスト名で、サービスレジストリーのIPアドレスを指定します。このservice=httpパラメーターはDNS SRVレコードの解析を有効にし、resolveパラメーターはNGINXが定期的にホスト名を再解決するよう指示します。ここでは、DNSレコードに含まれたデフォルトの期間、生存期間(TTL)を使います。validパラメーターを使えば、resolverディレクティブに別の期間を設定することもできます。

 

サービスのコピーが複数ある場合、サービスレジストリーは単一のDNS SRVレコード内のすべてのサービスのIPアドレスとポートを返します。その場合、NGINX Plusはサービス間のトラフィックを負荷分散します。

 

F5 BIG-IPはDNS SRVレコードを解析できないため、マイクロサービス環境でのトラフィックのロードバランシングを行うことはできません。

 

2.静的コンテンツの提供

NGINX Plusは、アプリケーションの負荷を分散し、コンテンツをキャッシュし、監視することができます。また、静的コンテンツのオリジンサーバーにすることもできます。NGINX Plusは、コミュニティー版のNGINXソフトウェアの上に構築され、静的なコンテンツをユーザーに配信するために4億9,000万以上のWebサイトで使用されています。静的コンテンツには、画像、CSS、JavaScript、およびWebページを構成するその他のアセットが含まれます。

 

「私はただのロードバランサーは望んでいませんでした。静的なコンテンツも提供したいと思っていたのです。そのため、 私の製品検索は、すぐにNGINX Plusに絞られました。」

– Dan Chamberlain、プリンシパルアーキテクト、Bluestem Brands

 

以下の構成スニペットで、NGINX Plusがwww.example.com/images/image.jpgへのリクエストを受信すると、要求者に対して、/path/to/images/image.jpg ファイルを返します。

server {

   server_name www.example.com;

   # …

   location /images {

        alias /path/to/images;

   }

}

F5 BIG-IPは、NGINX Plusのようにコンテンツのロードバランスとキャッシュは行えますが、静的なコンテンツは配信できません。F5を使用すると、Apache、NGINX、またはIISを実行する別のWebサーバーを立てる必要があります。

 

 

3.ARMサーバーでベアメタルを実行する

ARMプロセッサーは、低消費電力が要件となる、スマートフォンやその他のモバイル機器向けとしてよく知られています。でも、データセンターでARMサーバーを使用すれば、高パフォーマンスを維持しながら、エネルギー消費を削減できることまでは知られていないかもしれません。半導体チップメーカーのAMDは、2020年までにARMサーバーの市場シェアが20%になると予測しています。

 

NGINX,Inc.は、ARMバージョンのUbuntu Linux 14.04 / 16.04 LTSを搭載したARMサーバー上で動作するNGINX Plusを完全にサポートしています。インストール手順、構成、および機能セットはすべてx86バージョンと同じで、ARMサーバーへの移行はスムーズです。(ARMサーバーに加えて、NGINX Plusはx86およびPowerPC [ppc64_le]サーバー(IBM POWER8など)で動作します。

 

F5 BIG-IPは、プロプライエタリーなx86ベースのアプライアンスのみ、またはVMWare ESXiなどのハイパーバイザーの助けを借りれば、汎用のx86サーバーで実行できます。

 

4.Dockerコンテナの中で実行

 

コミュニティー版NGINXはDocker Hubで最も頻繁にダウンロードされるアプリケーションの 1つで、これまでに1000万回以上ダウンロードされています。Dockerを使用してアプリケーションを構築する開発者は、アプリケーションスタックの重要な部分として、圧倒的にNGINXを選択しています。

 

NGINX Plusはまた、NGINX, Inc.がフルサポートするDockerコンテナ内で実行できます。Docker用に独自のNGINX Plusのイメージを構築する方法については、UbuntuとCentOS/ Oracle Linux / Red Hatシステム用のサンプルDockerファイルを試して、 ブログ記事「NGINXとNGINX PlusをDockerに展開するをご覧ください。

 

Dockerコンテナ内で実行できることにより、NGINXのマイクロサービス・リファレンスアーキテクチャーであるファブリックモデルなど、興味深いアーキテクチャーが可能になります。これは、NGINX Plusがすべてのコンテナ内で実行されて、ロードバランシング、ルーティング、SSL / TLS終了サービスを提供するモデルです。

 

ファブリックモデルの特長は、コンテナ化されたすべてのマイクロサービスインスタンスで、NGINX Plusインスタンスが実行されることです

 

F5 BIG-IPはDockerコンテナの内部では実行できません。仮想アプライアンスまたはハードウェアアプライアンスとしてのみ使用できます。

 

 

5.再起動いらずのアップグレード

最新のバグフィックスとセキュリティパッチを確実に適用するために、ソフトウェアを最新の状態に保つことは非常に重要です。NGINX Plusを使用すると、サーバーを再起動したりパケットを取りこぼすことなく、ソフトウェアをアップグレードすることができます。

 

次の例は、標準のパッケージ管理ツール(この場合はapt)を使って、NGINX Plusをアップグレードする方法です。コマンドが完了すると、NGINX Plusのプロセスがリロードされ、新しいバージョンのソフトウェアがダウンタイムなしで実行されます。

 

# apt-get update

# apt-get install nginx-plus

Reading package lists… Done

Building dependency tree

Reading state information… Done

The following packages will be upgraded:

 nginx-plus

1 upgraded, 0 newly installed, 1 to remove and 43 not upgraded.

Need to get 2373 kB of archives.

After this operation, 1547 kB disk space will be freed.

Do you want to continue? [Y/n] y

Setting up nginx-plus (1.11.5-1~xenial) …

 

一方でF5 BIG-IPは、ソフトウェアをアップグレードするために完全に再起動する必要があります。

 

結論

NGINX Plusなら、同クラスのF5 BIG-IPと比較して80%以上のコスト節約が可能で、F5では実現できない幅広い機能を提供します。DNS SRVレコードを読み取ったり、コンテナ内で実行できる機能は、マイクロサービスのサポートとレガシーアプリケーションの近代化を考える際には、非常に重要です。

NGINX Plus 試用版(30日間)

NGINX Unit の概要からインストール

2017年9月6日に発表された NGINX Unitの概要からインストールの手順までをマニュアルの参考訳とともにお伝えします。
 

NGINX Unitは、複数の言語でアプリケーションを実行できるように設計された動的Webアプリケーションサーバです。

NGINX Unitは軽量、多言語、そしてAPIを介して動的に設定されます。 サーバーの設計により、エンジニアリングまたはオペレーションによって必要に応じて特定のアプリケーションパラメータを再構成することができます。

NGINXユニットは現在、ベータ版として利用可能です。 したがって、テスト環境での使用を目的にしており、本番環境での使用はお勧めしません。

NGINX Unit の主な機能

  • RESTful JSON APIを使用した完全動的再構成
  • 複数のアプリケーション言語とバージョンを同時に実行
  • 動的アプリケーションプロセス管理(近日公開予定)
  • TLSサポート(近日公開予定)
  • TCP、HTTP、HTTPS、HTTP/2 ルーティングとプロキシ(近日公開予定)

サポートされているアプリケーション言語

  • Python
  • PHP
  • Go
  • JavaScript / Node.js(近日公開予定)
  • Java(近日公開予定)
  • Ruby(近日公開予定)
 
NGINX Unitのドキュメント原文はこちらを参照ください。
 

NGINX Unit インストール

System Requirements

NGINXユニットは、以下のシステムでコンパイルされ実行されます。
 
  • Linux 2.6 or later
  • FreeBSD 9 or later
  • MacOS X
  • Solaris 11
  • Architectures:
  • i386
  • amd64
  • powerpc
  • arm
 
NGINXユニットで動作するアプリケーションの場合は、それぞれのプログラミング言語が必要です。
 
  • Python 2.6, 2.7, 3
  • PHP 5, 7
  • Go 1.6 or later

同じシステムに複数のバージョンの同じ言語をインストールすることができます。

プリコンパイル済みパッケージ

Unitのプリコンパイルされたバイナリは、CentOS 7.0およびUbuntu 16.04 LTSで使用できます。

CentOSパッケージ

  1. /etc/yum.repos.d/unit.repoファイルを次のように作成します内容:
    [unit]
    name=unit repo
    baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
    gpgcheck=0
    enabled=1
  2. ユニットパッケージをダウンロードする:
    # yum Install unit
 
[参考] 実際にAWS環境のCentOSにてインストールした場合は以下のように実行されます。
Loaded plugins: fastestmirror
base | 3.6 kB 00:00
extras | 3.4 kB 00:00
unit | 2.9 kB 00:00
updates | 3.4 kB 00:00
(1/5): base/7/x86_64/group_gz | 156 kB 00:00
(2/5): extras/7/x86_64/primary_db | 101 kB 00:00
(3/5): base/7/x86_64/primary_db | 5.7 MB 00:00
(4/5): updates/7/x86_64/primary_db | 2.8 MB 00:01
(5/5): unit/x86_64/primary_db | 84 kB 00:01
Determining fastest mirrors
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Resolving Dependencies
–> Running transaction check
—> Package unit.x86_64 0:0.1-1.el7.ngx will be installed
–> Processing Dependency: libphp5-5.4.so()(64bit) for package: unit-0.1-1.el7.ngx.x86_64
–> Running transaction check
—> Package php-embedded.x86_64 0:5.4.16-42.el7 will be installed
–> Processing Dependency: php-common(x86-64) = 5.4.16-42.el7 for package: php-embedded-5.4.16-42.el7.x86_64
–> Running transaction check
—> Package php-common.x86_64 0:5.4.16-42.el7 will be installed
–> Processing Dependency: libzip.so.2()(64bit) for package: php-common-5.4.16-42.el7.x86_64
–> Running transaction check
—> Package libzip.x86_64 0:0.10.1-8.el7 will be installed
–> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
unit x86_64 0.1-1.el7.ngx unit 146 k
Installing for dependencies:
libzip x86_64 0.10.1-8.el7 base 48 k
php-common x86_64 5.4.16-42.el7 base 564 k
php-embedded x86_64 5.4.16-42.el7 base 1.3 M
Transaction Summary
================================================================================
Install 1 Package (+3 Dependent packages)
Total download size: 2.1 M
Installed size: 8.7 M
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/libzip-0.10.1-8.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for libzip-0.10.1-8.el7.x86_64.rpm is not installed
(1/4): libzip-0.10.1-8.el7.x86_64.rpm | 48 kB 00:00
(2/4): php-common-5.4.16-42.el7.x86_64.rpm | 564 kB 00:00
(3/4): php-embedded-5.4.16-42.el7.x86_64.rpm | 1.3 MB 00:00
(4/4): unit-0.1-1.el7.ngx.x86_64.rpm | 146 kB 00:00
——————————————————————————–
Total 2.0 MB/s | 2.1 MB 00:01
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid : “CentOS-7 Key (CentOS 7 Official Signing Key) “
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-3.1611.el7.centos.x86_64 (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libzip-0.10.1-8.el7.x86_64 1/4
Installing : php-common-5.4.16-42.el7.x86_64 2/4
Installing : php-embedded-5.4.16-42.el7.x86_64 3/4
Installing : unit-0.1-1.el7.ngx.x86_64 4/4
———————————————————————-
Thank you for installing NGINX Unit!
You may want to load demo configuration and check a couple of apps:
# service unitd start
# service unitd restoreconfig /usr/share/doc/unit/examples/example.config
# curl http://localhost:8300/
# curl http://localhost:8400/
Online documentation is available at http://unit.nginx.org/
———————————————————————-
Verifying : php-embedded-5.4.16-42.el7.x86_64 1/4
Verifying : libzip-0.10.1-8.el7.x86_64 2/4
Verifying : php-common-5.4.16-42.el7.x86_64 3/4
Verifying : unit-0.1-1.el7.ngx.x86_64 4/4
Installed:
unit.x86_64 0:0.1-1.el7.ngx
Dependency Installed:
libzip.x86_64 0:0.10.1-8.el7         php-common.x86_64 0:5.4.16-42.el7
php-embedded.x86_64 0:5.4.16-42.el7
Complete!
 

同時に libzip、php-common、php-embedded の3パッケージがインストールされました。

unitのデモコンフィグレーションがインストールの最後のメッセージでも出力されているので試しに実行してみましょう。

# service unitd start
Redirecting to /bin/systemctl start unitd.service

 

# service unitd restoreconfig /usr/share/doc/unit/examples/example.config
Restoring configuration from /usr/share/doc/unit/examples/example.config…
{
“success”: “Reconfiguration done.”
}
参考:example.configの内容は以下の通り
# cat /usr/share/doc/unit/examples/example.config
{
“applications”: {
“example_php”: {
“type”: “php”,
“user”: “nobody”,
“workers”: 2,
“root”: “/usr/share/doc/unit/examples/php-app”,
“index”: “index.php”
},
“example_python”: {
“type”: “python”,
“user”: “nobody”,
“workers”: 2,
“path”: “/usr/share/doc/unit/examples/python-app”,
“module”: “wsgi”
},
“example_go”: {
“type”: “go”,
“user”: “nobody”,
“executable”: “/tmp/go-app”
}
},
“listeners”: {
“*:8300”: {
“application”: “example_php”
},
“*:8400”: {
“application”: “example_python”
},
“*:8500”: {
“application”: “example_go”
}
}
}

 

# curl http://localhost:8300/

PHP Logo

PHP Version 5.4.16

System Linux ip-172-31-5-112 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64
Build Date Nov 6 2016 00:31:38
Server API unit
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc
Loaded Configuration File /etc/php.ini
Scan this dir for additional .ini files /etc/php.d
Additional .ini files parsed /etc/php.d/curl.ini, /etc/php.d/fileinfo.ini, /etc/php.d/json.ini, /etc/php.d/phar.ini, /etc/php.d/zip.ini
PHP API 20100412
PHP Extension 20100525
Zend Extension 220100525
Zend Extension Build API220100525,NTS
PHP Extension Build API20100525,NTS
Debug Build no
Thread Safety disabled
Zend Signal Handling disabled
Zend Memory Manager enabled
Zend Multibyte Support disabled
IPv6 Support enabled
DTrace Support disabled
Registered PHP Streams https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk
Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

PHP Credits


Configuration

bz2

BZip2 Support Enabled
Stream Wrapper support compress.bzip2://
Stream Filter support bzip2.decompress, bzip2.compress
BZip2 Version 1.0.6, 6-Sept-2010

calendar

Calendar support enabled

Core

PHP Version 5.4.16
Directive Local Value Master Value
allow_url_fopen On On
allow_url_include Off Off
always_populate_raw_post_data Off Off
arg_separator.input & &
arg_separator.output & &
asp_tags Off Off
auto_append_file no value no value
auto_globals_jit On On
auto_prepend_file no value no value
browscap no value no value
default_charset no value no value
default_mimetype text/html text/html
disable_classes no value no value
disable_functions no value no value
display_errors Off Off
display_startup_errors Off Off
doc_root no value no value
docref_ext no value no value
docref_root no value no value
enable_dl Off Off
enable_post_data_reading On On
error_append_string no value no value
error_log no value no value
error_prepend_string no value no value
error_reporting 22527 22527
exit_on_timeout Off Off
expose_php On On
extension_dir /usr/lib64/php/modules /usr/lib64/php/modules
file_uploads On On
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
html_errors On On
ignore_repeated_errors Off Off
ignore_repeated_source Off Off
ignore_user_abort Off Off
implicit_flush Off Off
include_path .:/usr/share/pear:/usr/share/php .:/usr/share/pear:/usr/share/php
log_errors On On
log_errors_max_len 1024 1024
mail.add_x_header On On
mail.force_extra_parameters no value no value
mail.log no value no value
max_execution_time 30 30
max_file_uploads 20 20
max_input_nesting_level 64 64
max_input_time 60 60
max_input_vars 1000 1000
memory_limit 128M 128M
open_basedir no value no value
output_buffering 4096 4096
output_handler no value no value
post_max_size 8M 8M
precision 14 14
realpath_cache_size 16K 16K
realpath_cache_ttl 120 120
register_argc_argv Off Off
report_memleaks On On
report_zend_debug On On
request_order GP GP
sendmail_from no value no value
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
serialize_precision 17 17
short_open_tag Off Off
SMTP localhost localhost
smtp_port 25 25
sql.safe_mode Off Off
track_errors Off Off
unserialize_callback_func no value no value
upload_max_filesize 2M 2M
upload_tmp_dir no value no value
user_dir no value no value
user_ini.cache_ttl 300 300
user_ini.filename .user.ini .user.ini
variables_order GPCS GPCS
xmlrpc_error_number 0 0
xmlrpc_errors Off Off
zend.detect_unicode On On
zend.enable_gc On On
zend.multibyte Off Off
zend.script_encoding no value no value

ctype

ctype functions enabled

curl

cURL support enabled
cURL Information 7.29.0
Age 3
Features
AsynchDNS Yes
Debug No
GSS-Negotiate Yes
IDN Yes
IPv6 Yes
Largefile Yes
NTLM Yes
SPNEGO No
SSL Yes
SSPI No
krb4 No
libz Yes
CharConv No
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host x86_64-redhat-linux-gnu
SSL Version NSS/3.21 Basic ECC
ZLib Version 1.2.7
libSSH Version libssh2/1.4.3

date

date/time support enabled
“Olson” Timezone Database Version 0.system
Timezone Database internal
Default timezone UTC
Directive Local Value Master Value
date.default_latitude 31.7667 31.7667
date.default_longitude 35.2333 35.2333
date.sunrise_zenith 90.583333 90.583333
date.sunset_zenith 90.583333 90.583333
date.timezone no value no value

ereg

Regex Library Bundled library enabled

exif

EXIF Support enabled
EXIF Version 1.4 $Id$
Supported EXIF Version 0220
Supported filetypes JPEG,TIFF
Directive Local Value Master Value
exif.decode_jis_intel JIS JIS
exif.decode_jis_motorola JIS JIS
exif.decode_unicode_intel UCS-2LE UCS-2LE
exif.decode_unicode_motorola UCS-2BE UCS-2BE
exif.encode_jis no value no value
exif.encode_unicode ISO-8859-15 ISO-8859-15

fileinfo

fileinfo support enabled
version 1.0.5

filter

Input Validation and Filtering enabled
Revision $Id: 2aa8dd57d9c0c655cd45e6e5872bb95fa5ad76cf $
Directive Local Value Master Value
filter.default unsafe_raw unsafe_raw
filter.default_flags no value no value

ftp

FTP support enabled

gettext

GetText Support enabled

gmp

gmp support enabled
GMP version 6.0.0

hash

hash support enabled
Hashing Engines md2 md4 md5 sha1 sha224 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost adler32 crc32 crc32b fnv132 fnv164 joaat haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv

iconv support enabled
iconv implementation glibc
iconv library version 2.17
Directive Local Value Master Value
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1

json

json support enabled
json version 1.2.1

libxml

libXML support active
libXML Compiled Version 2.9.1
libXML Loaded Version 20901
libXML streams enabled

mhash

MHASH support Enabled
MHASH API Version Emulated Support

openssl

OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL Header Version OpenSSL 1.0.1e-fips 11 Feb 2013

pcre

PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 8.32 2012-11-30
Directive Local Value Master Value
pcre.backtrack_limit 1000000 1000000
pcre.recursion_limit 100000 100000

Phar

Phar: PHP Archive support enabled
Phar EXT version 2.0.1
Phar API version 1.1.1
SVN revision $Id: c5042cc34acebcc0926625b57dff03deebbe6472 $
Phar-based phar archives enabled
Tar-based phar archives enabled
ZIP-based phar archives enabled
gzip compression enabled
bzip2 compression enabled
Native OpenSSL support enabled
Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
Directive Local Value Master Value
phar.cache_list no value no value
phar.readonly On On
phar.require_hash On On

Reflection

Reflection enabled
Version $Id: 6c4d8062369898a397e4b128348042f5c01b4427 $

session

Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary
Directive Local Value Master Value
session.auto_start Off Off
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file /dev/urandom /dev/urandom
session.entropy_length 32 32
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_
session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0

shmop

shmop support enabled

SimpleXML

Simplexml support enabled
Revision $Id: 692516840b2d7d6e7aedb0bedded1f53b764a99f $
Schema support enabled

sockets

Sockets Support enabled

SPL

SPL support enabled
Interfaces Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

standard

Dynamic Library Support enabled
Path to sendmail /usr/sbin/sendmail -t -i
Directive Local Value Master Value
assert.active 1 1
assert.bail 0 0
assert.callback no value no value
assert.quiet_eval 0 0
assert.warning 1 1
auto_detect_line_endings 0 0
default_socket_timeout 60 60
from no value no value
url_rewriter.tags a=href,area=href,frame=src,input=src,form=fakeentry a=href,area=href,frame=src,input=src,form=fakeentry
user_agent no value no value

tokenizer

Tokenizer Support enabled

xml

XML Support active
XML Namespace Support active
libxml2 Version 2.9.1

zip

Zip enabled
Extension Version $Id: 0c033d4e4613d577409950ed7bf8da4b68286d15 $
Zip version 1.11.0
Compiled against libzip version 0.10.1

zlib

ZLib Support enabled
Stream Wrapper compress.zlib://
Stream Filter zlib.inflate, zlib.deflate
Compiled Version 1.2.7
Linked Version 1.2.7
Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value

Additional Modules

Module Name

Environment

Variable Value
LANG en_US.UTF-8
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
UNITD_OPTIONS –log /var/log/unitd.log –pid /run/unitd.pid

PHP Variables

Variable Value
_SERVER[“SERVER_PROTOCOL”] HTTP/1.1
_SERVER[“PHP_SELF”] /
_SERVER[“SCRIPT_NAME”] /
_SERVER[“SCRIPT_FILENAME”] /usr/share/doc/unit/examples/php-app/index.php
_SERVER[“DOCUMENT_ROOT”] /usr/share/doc/unit/examples/php-app
_SERVER[“REQUEST_METHOD”] GET
_SERVER[“REQUEST_URI”] /
_SERVER[“SERVER_NAME”] localhost
_SERVER[“SERVER_PORT”] 8300
_SERVER[“REMOTE_ADDR”] 127.0.0.1
_SERVER[“SERVER_ADDR”] 0.0.0.0
_SERVER[“HTTP_USER_AGENT”] curl/7.29.0
_SERVER[“HTTP_HOST”] localhost:8300
_SERVER[“HTTP_ACCEPT”] */*
_SERVER[“REQUEST_TIME_FLOAT”] 1505725162.0346
_SERVER[“REQUEST_TIME”] 1505725162

PHP License

This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.

サンプルを見てもPHPが動作していることがわかります。

これがPythonではこのような動作をします。

# curl http://localhost:8400/
2017-09-18 08:59:29 AM
ENV Variables:
LANG en_US.UTF-8
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
UNITD_OPTIONS –log /var/log/unitd.log –pid /run/unitd.pid
なお、goはタイムアウト・・・課題ありです。調べておきます。。。。
# curl http://localhost:8500/
Read header timeout
なお、Ubuntuを使う場合は以下の手順になります。

Ubuntu Packages

  1. NGINX、Inc.のリポジトリとパッケージに使用する認証鍵 [key] をダウンロードします。
  2. aptプログラムのキーリングにキーを追加します。
    プログラムはNGINXリポジトリの署名を認証することができ、NGINX Unitパッケージのインストール中にPGPキーが見つからないという警告が表示されなくなります。

     
    # sudo apt-key add nginx_signing.key
  3. /etc/apt/sources.listファイルの末尾に次の行を追加します。
    deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
    deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
  4. NGINX Unit パッケージをダウンロードし、インストールします。
    # apt-get update
    # apt-get install unit

NGINX Unitのドキュメント原文はこちらを参照ください。

nginx.conf 2017 参加レポート | NGINX Application Platform & NGINX Unit 発表

サイオステクノロジーは、米国 オレゴン州 ポートランドにて開催された nginx.conf 2017 に参加してきました。本記事では、この nginx.conf 2017 にて発表された内容を現場の雰囲気も含めて公開します。
 

サイオステクノロジー 村田です。今回、米国時間 2017年9月6日(水)9時より開催された nginx.conf に参加してきました。今回の nginx.conf 2017 では、2つの大きな発表がありました。

目次 [hide]

NGINX Application Platform

そのうちの1つがエンタープライズ向けのアプリケーションプラットフォーム群の NGINX Application Platform 、そしてもう一つが新たな オープンソースプロジェクトとなる NGINX Unit の発表でした。

eb4fa566-6836-41de-9b1e-79bc27c8769b

出展:https://www.nginx.com/blog/introducing-nginx-application-platform/
The NGINX Application Platform gives enterprises the tools they need to deliver applications with performance,reliability, security, and scale

Day1のキーノートセッションでは、Nginx Inc. のCEO である Gus Robertson氏により NGINX Application Platform の発表が行われました。この発表とともに会場は大きな拍手と歓声が響きわたり、この発表の意味の大きさが伝わりました。

66d99874-16cb-4131-998b-e29c76a6c046

 

エンタープライズ向けのサブスクリプションとして展開している NGINX Plus では、この Application Platform が包括して提供され、これまでの NGINX Plus に、GUIによる包括的な管理を可能にする NGINX Controller そして、Application Server となる NGINX Unit が加わえて NGINX Application Platform として提供される予定だ。

NGINX Controller

ワークフローや権限管理への対応や、マルチクラウドに対応するなど、近年求められる自動化の要件をしっかりと抑えている所も見逃せない。

5472d5fd-8c33-48ec-8387-e606b9ab752a

 

NGINX Unit

a8f32fa2-7f34-418d-87e8-838b4a6b298a

 

NGINX Unit は、Day2 にてオープンソースプロジェクトとして新たにスタートする事が発表された。この発表には NGINX の開発者である Igor氏が自ら登壇して説明を行いました。

(サイオスは前日に Igor氏を含むメンバーとミーティングをしていたので、Igor氏本人からはこの NGINX Unit の発表を期待してほしいと言われていたため、この意味が実際に聞くとよくわかりました。)

7bb12ee5-56df-44b8-a248-be291a061502

 

NGINX Unit では、PHP と Python、Go 言語をマルチランゲージとして取り扱うことが出来る他、マルチバージョンとしての対応の行われる。今回の発表段階ではこの3種類の言語であるが、ロードマップ上では JAVA 、Node.js への対応も計画がされていることが発表された。

6a0ed3c5-5ef6-46eb-8d95-5b34bc5a6b9f

NGINX Amplify

NGINX Unit の発表に続き、既にBate版で発表されていた NGINX Amplify のGeneral Releaseについても発表が行われました。NGINX Amplify は NGINX を管理するために開発されたモニタリングツールで、NGINX Amplify により NGINX Plus 、NGINX 、NGINX Controller を管理できるとされている。

NGINX Amplify の利用方法は本ブログでもまとめているので、参考にしてもらいたい。

2f069c33-7199-4cbe-90df-55a6e0b0b583

 

今回の nginx.conf 2017 では、Day1ではエンタープライズ向け、Day2ではオープンソースコミュニティとして、2つの大きな発表が行なわれ、マイクロサービスに代表されるエンタープライズ Webアプリケーションの仕組みをより簡単に、そして高速に展開でき、運用面でも安心して使えるように大きな改革が起こる予感を感じました。

変化に対応できない企業は衰退を辿り、変化により早く順応できた企業は成長をしているという言葉もあったが、まさに今後のWebアプリケーションの世界ではこの変化に対応できるのかが大事になると考えます。

サイオステクノロジー OSS事業企画部 村田

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 Amplify ベータ版公開中

Dockerセミナーの中でNGINXをご紹介した際、NGINX Amplify ベータ版の紹介を行いました。
 

サイオステクノロジー 村田です。

今回はNginx Inc,より紹介を受けました NGINX Amplify をご紹介します。

NGINX Amplify は、NGINX の状態を集中管理するためのマネージドサービスになります。利用方法は非常に簡単で豊富なステータス情報を取得できるため、NGINX を大規模に使われている方に最適なツールとなっています。

NGINX Plus が提供開始されてから次に続くサービスとして開発が行なわれてきまして、現在のベータ版提供に至っています。ぜひ、日本のユーザーからも NGINX Amplify を試して頂きフィードバックを頂ければ、より良いツールとして正式リリースを迎えられるのではないでしょうか。

先日開催したDockerのセミナーの中でAmplifyを紹介しました資料をもとに利用方法を案内します。

目次 [hide]

NGINX Amplify のはじめかた

NGINX Amplify をはじめるには、以下のURLにアクセスを行います。
Create account の「First name」「Last name」「Email」「Password」「Company」を入力し、「By signing up, you agree to the Terms of Service」に同意して「Create」ボタンをクリックします。

https://amplify.nginx.com/signup/

Amplify_index

アカウントをCreateすると、以下のようにメールが届きますので赤枠の承認リンクをクリックします。

01qwls

こちらで NGINX Amplify の利用するための準備が完了しました。NGINX Amplify にログインするとダッシュボードが表示されます。左下の「New system」をクリックするとエージェントインストールの方法が表示されます。APIキーなどが含まれますので、必ずこちらの内容はご確認ください。

ujddgr

 

NGINX Amplify エージェントインストール&モニタリング開始方法:

1. モニタリングを行いたいシステムにSSHでログインします。

2. curl もしくは wget にてインストールスクリプトをダウンロードします。

curl -L -O https://github.com/nginxinc/nginx-amplify-agent/raw/master/packages/install.sh
もしくは
wget https://github.com/nginxinc/nginx-amplify-agent/raw/master/packages/install.sh
 

3. root ユーザーにて Amplify Agent package のインストールを行います。

API_KEY='[ここにAPIキーが記載されます]’ sh ./install.sh
 

4. インストールが成功すると約1分でダッシュボード上にシステムが登録されます。

 

Dockerコンテナーをご利用の場合

github上にAgentが含まれたコンテナーイメージが用意されています。こちらのイメージを利用することでAgentをインストールすることなくモニタリングを開始することができます。

https://github.com/nginxinc/docker-nginx-amplify

ujddgr

 

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 Plus R12 p3 メンテナンスリリース

2017年6月29日にNGINX Plus R12 p3のリリースが行われました。 本記事にてこのリリースの概要をまとめます。
 

2017年6月29日にNGINX Plus R12 p3のリリースが行われました。
このリリースでは既知の問題の修正が行われておりますが、クリティカルな問題ではありません。
影響等を配慮の上でアップデートについてはご検討ください。

NGINX Plus R12 p3 メンテナンスリリース

このアップデートでは、キャッシュされたレスポンスに追加の内部キャッシュヘッダーデータが含まれる可能性のある問題が修正されています。Nginx Inc,では、この問題は重要ではない問題と位置付けています。

現時点では機密データが漏洩する可能性は認識していませんが、事前の動作検証などを実施の上で NGINX Plus を R12-p3 にアップグレードすることをお勧めします。

なお、ワークアラウンドとして、設定ディレクティブ ‘max_ranges 1’を使用して、バイト範囲の処理を制限することで、この問題を回避することもできます。

既存のNGINX Plusインスタンスを更新するには、次のコマンドを実行します。

* Ubuntuベースの場合:sudo apt-get install nginx-plus
* RedHat Linuxベースの場合:sudo yum update nginx-plus

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.

nginx 1.13.1 リリース

本記事では、2017年5月30日にリリースされた nginx 1.13.1 についてご案内します。
 

2017年5月30日に nginx 1.13.1 がリリースされました。今回のリリースでは機能追加とBugFixが中心となっています。以下に日本語参考訳をご案内します。

nginx 1.13.1 内容

  • 機能追加:ホスト名を “set_real_ip_from” ディレクティブパラメータとして使用できるようになりました。
  • 機能改善:vimの構文強調表示スクリプトの改善。
  • 機能追加:”worker_cpu_affinity” ディレクティブがFreeBSD BSDで動作するようになりました。Sepherosa Ziehauに感謝します。
  • バグ修正:1.1.0より前のOpenSSLを使用している場合、バックエンド接続のSSL再ネゴシエーションが機能しませんでした。
  • ワークアラウンド:Oracle Developer Studio 12.5ではnginxを構築できませんでした。
  • ワークアラウンド:”max_size”パラメータに基づいてキャッシュをクリーニングするとき、キャッシュマネージャはロングロックキャッシュエントリを無視するようになりました。
  • 遅延受諾と “listen” ディレクティブの “proxy_protocol”パラメータが使用された場合、クライアント SSL 接続は直ちに終了しました。
  • バグ修正:”proxy_cache_background_update” ディレクティブのバグ修正
  • ワークアラウンド:”tcp_nodelay” ディレクティブが SS Lハンドシェイクの前に TCP_NODELAY オプションを設定するようになりました。

 

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

Changes with nginx 1.13.1                         30 May 2017

*) Feature: now a hostname can be used as the “set_real_ip_from” directive parameter.

*) Feature: vim syntax highlighting scripts improvements.

*) Feature: the “worker_cpu_affinity” directive now works on DragonFly BSD. Thanks to Sepherosa Ziehau.

*) Bugfix: SSL renegotiation on backend connections did not work when using OpenSSL before 1.1.0.

*) Workaround: nginx could not be built with Oracle Developer Studio 12.5.

*) Workaround: now cache manager ignores long locked cache entries when cleaning cache based on the “max_size” parameter.

*) Bugfix: client SSL connections were immediately closed if deferred accept and the “proxy_protocol” parameter of the “listen” directive were used.

*) Bugfix: in the “proxy_cache_background_update” directive.

*) Workaround: now the “tcp_nodelay” directive sets the TCP_NODELAY option before an SSL handshake.