nginx バージョンアップ動向(2015/07〜2015/12)

24
Nginx バージョンアップ動向 2015/07 2015/12 TAKAMURA Narimichi@nari_ex2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 1

Upload: narimichi-takamura

Post on 14-Apr-2017

813 views

Category:

Technology


1 download

TRANSCRIPT

Nginx バージョンアップ動向2015/07 ~ 2015/12

TAKAMURA Narimichi(@nari_ex)

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 1

バージョンアップ動向• 前回発表時点からの更新分を追いかけました

• 今回の範囲: 2015/07(v1.9.3)~ 2015/12(v1.9.9)

• Change, Feature, Bugfix に注目

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 2

Nginx 1.9.3(2015-07-14) その1

• Change

• http, mail, stream ブロックの重複が禁止になった

• Feature

• キーごとに接続数を制限する stream モジュール

• ngx_stream_limit_conn_moduleが追加された

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 3

接続数制限の設定例

• 1つのIPアドレスに対して1つの接続のみ許可する設定

• キーを柔軟に選択できるところがすばらしいstream { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... limit_conn addr 1; limit_conn_log_level error; }}

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 4

Nginx 1.9.3(2015-07-14) その2

• Feature

• 接続ごとにデータレートを制限する stream モジュール

• ngx_stream_proxy_module に proxy_download_rate

と proxy_upload_rate ディレクティブが追加された

• アップロードとダウンロードを別々に指定可能

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 5

データレート制限の設定例• アップロードとダウンロードの帯域制限

• 1つの接続あたりの帯域上限を設定するserver { proxy_upload_rate 100k; proxy_download_rate 500k;}

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 6

Nginx 1.9.3(2015-07-14) その3

• Bugfix

• ssl_stapling_file が動作しないバグ

• このバグは1.9.2のみ

• ssl_stapling 利用時セグフォするバグ

• このバグも1.9.2のみ

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 7

Nginx 1.9.4(2015-08-18) その1

• Change

• stream モジュールにおける proxy_downstream_buffer と

proxy_upstream_buffer が proxy_buffer_size という名前に変更された

• Feature

• stream モジュールに tcp_nodelay ディレクティブを追加

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 8

Nginx 1.9.4(2015-08-18) その2

• Feature

• sub_filter ディレクティブが複数使えるようになった

• sub_filter ディレクティブの置換文字列に変数を含むことができるようになった

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 9

sub_filter

• レスポンスデータを文字列置換するフィルタ

• 複数書ける && 変数が使えるようになったlocation / { sub_filter '<a href="http://127.0.0.1:8080/' '<a href="https://$host/'; sub_filter '<img src="http://127.0.0.1:8080/' '<img src="https://$host/'; sub_filter_once on;}

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 10

Nginx 1.9.4(2015-08-18) その3

• Bugfix

• 正規表現で指定された location の内部で try_files と

alias が使用された場合にセグフォするバグ

• 1.7.1以降が対象

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 11

Nginx 1.9.5(2015-09-22) その1

• Feature

• ngx_http_v2_module が追加

• HTTP/2 をサポート

• ngx_http_spdy_module に取って代わったモジュール

• Dropbox と Automa5c がスポンサーとのこと

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 12

ngx_http_v2_module

• ngx_http_v2_module を用いた HTTP/2 の設定server { listen 443 ssl http2;

ssl_certificate server.crt; ssl_certificate_key server.key;}

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 13

Nginx 1.9.5(2015-09-22) その2

• Change

• output_buffers のデフォルト値が 1 から 2 へ変更

• レスポンス時にディスク読み込みをするときに利用するバッファが1つから2つに増えた

• キャッシュからレスポンスを返すとき、すべてのキャッシュキーを探索するようになった

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 14

Nginx 1.9.5(2015-09-22) その3

• Bugfix

• http ブロックで sub_filter を利用したときにセグフォするバグを修正

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 15

Nginx 1.9.6(2015-10-27)• Bugfix

• HTTP/2 利用時にセグフォするバグ

• HTTP/2 利用時に $server_protocol が空になるバグ

• streamモジュールでバックエンドにSSL通信を行う場合に、予期せぬタイムアウトエラーが発生するバグ

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 16

Nginx 1.9.7(2015-11-17) その1

• Feature

• syslog 設定パラメータに nohostname を追加

• ログにホストネームを出力しない

• proxy_cache_convert_head ディレクティブ追加

• キャッシュのために、HEAD メソッドを GET メソッドに変換する(デフォルト: 有効)

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 17

Nginx 1.9.7(2015-11-17) その2

• Bugfix

• expires ディレクティブで変数を利用した場合に動作しないバグ

• HTTP/2 利用時にセグフォするバグを修正

• 1.9.6 以降のバージョンのみ

• ngx_http_v2_module のバグ2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 18

Nginx 1.9.8(2015-12-08) その1

• Feature

• ngx_http_slice_module 追加

• HTTP Byte Ranges をサポート

• pwritev() をサポート

• オフセット指定可能な複数バッファ書き込み

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 19

Nginx 1.9.8(2015-12-08) その2

• Feature

• upstream ブロック内で include ディレクティブが利用可能になった

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 20

Nginx 1.9.9(2015-12-09) その1

• Bugfix

• unix domain socket を利用してプロキシする際、設定値に変数を入れていると動作しないバグ

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 21

重要だと感じたアップデート• ngx_http_v2_module とそのバグ修正の様子

• 接続数や通信レートを制限する機能

• Range Byte 対応(ngxh"pslice_module)

• output_buffers のデフォルト値が変わった件

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 22

感想• Stream の機能がどんどん増えてる ← 開発に力を入れてるっぽいので今後も続きそう

• SPDY の時と同様に HTTP/2 もリリース後のバグ修正は多い

• upstream ブロックで include 使えるの地味に嬉しい

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 23

おしまい

2016/01/18 社内プロダクト勉強会 - TAKAMURA Narimichi 24