nginx バージョンアップ動向(2015/07〜2015/12)
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