View
1.760
Download
0
Category
Preview:
Citation preview
Nginx&バージョンアップ動向2015/01&~&2015/06
TAKAMURA'Narimichi(@nari_ex)
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 1
バージョンアップ動向• 前回発表時点からの更新分を追いかけました
• 2015/01(v1.7.10)~*2015/06(v1.9.2)
• Change,*Feature,*Bugfix*に注目
• (proxy|fastcgi|scgi)_hoge*みたいなパラメータは*proxy*のみ記載
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 2
Nginx&1.7.10(2014-02-10)&その1
• Feature
• use_temp_path(が(proxy_cache_path(などで利用可能
• キャッシュ作成時の一時ファイルのパス
• on(または(off(を指定
• proxy_temp_path(などで具体的なパスを指定する
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 3
use_temp_path!の設定例proxy_cache_path /data/nginx/cache use_temp_path=on;proxy_temp_path /data/nginx/tmp
• キャッシュ作成は一時ファイルに書き込んだあと、そのファイルをキャッシュ保存先のパスへ移動することで行われる
• 移動元と移動先のファイルシステムが異なる場合、リネームではなくコピー処理になるので注意
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 4
Nginx&1.7.10(2014-02-10)&その2
• Feature
• upstream_header_time(変数
• upstream(サーバから応答ヘッダを受け取るまでの時間
• lua(や(mruby(拡張を用いて、n(秒以上応答ヘッダを返さない(upstream(サーバを切り離す処理とかが実現できそう
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 5
Nginx&1.7.11(2015-03-24)&その1
• Change
• aio sendfile;(が非推奨(deprecated)
• aioとsendfileディレクティブを両方使った場合、非同期ファイル(I/O(時のsendfile()呼び出しの際に読みを行う
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 6
Nginx&1.7.11(2015-03-24)&その2
• Feature
• スレッドプールをサポート(experimental)
• メールプロキシがクライアント.SSL.をサポート
• proxy_request_buffering!追加
• リクエストボディのバッファリングのON・OFF切り替え
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 7
proxy_request_buffering!の設定例client_max_body_size 50m;server { listen 80; location /upload { proxy_request_buffering off; ... }}
※!設定次第では強制的にONになることがあるので注意!1
1"nginxのリクエストボディのバッファリングに関する問題とその改善策
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 8
Nginx&1.7.11(2015-03-24)&その3
• Feature
• リクエストボディフィルターAPI(experimental)
• Bugfix
• LibreSSL7を利用した場合に7SSLv37が利用できない問題を修正
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 9
Nginx&1.7.12(2015-04-07)&その1
• Feature
• tcp_nodelay(がバックエンドとのSSLコネクション時にも動作する
• スレッドプールがキャッシュ読み込み時に利用される※(スレッドプールは9倍速くなるらしい2
2"Thread"Pools"in"NGINX"Boost"Performance"9x!
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 10
Nginx&1.7.12(2015-04-07)&その2
• Bugfix
• Linux*でスレッドプール利用時にSegmenta0on*Faultする問題を修正
• ngx_http_spdy_module*のバグ修正
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 11
Nginx&1.9.0(2015-04-28)&その1
• Change
• aio(と(rtsig(イベントメソッドが削除された
• rtsig(とは(librt(を用いた非同期処理の手法
• upstream!ブロック内で!zoneディレクティブが利用可能
• アップストリームを各ワーカープロセス間で共有できる
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 12
upstream!ブロック内で!zone!ディレクティブを使うupstream backends { zone zone_for_backends 64k; server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; ...}
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 13
Nginx&1.9.0(2015-04-28)&その2
• Feature
• ngx_stream_core_module!モジュールが新たに利用可能
• ngx_http_memcached_module(が(byte(ranges(request3(をサポート
3"14"Header"Field"Defini0ons
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 14
ngx_stream_core_module!モジュールの利用例
TCP$Load$Balancing$ができる$→$HA$Proxy$などの代替になるかもstream { upstream backend { hash $remote_addr consistent;
server backend1.example.com:12345 weight=5; server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; }}
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 15
Nginx&1.9.1(2015-05-26)&その1
• Change
• SSLv3%がデフォルトで%disabled
• 長い間非推奨だったいくつかのディレクティブが利用不可4
• 具体的なディレクティブ書いてなくて怖い
• connections)は利用できなくなった様子4"Removed"the"deprecated""connec1ons""direc1ve.
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 16
Nginx&1.9.1(2015-05-26)&その2
• Feature
• reuseport!が!listen!ディレクティブで利用可能
• upstream_connect_time(変数が利用可能に
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 17
reuseport!の設定例
Linux&Kernel&3.9&からサポートされた&SO_REUSEPORT4&を利用する
listen 443 ssl spdy reuseport;
Linux&の場合は難あり(DragonFly&BSDはOKとのこと)5&6
6"changeset"6153:4f6efabcb09b
5"Merge"branch"'soreuseport'
4"Removed"the"deprecated""connec1ons""direc1ve.
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 18
Nginx&1.9.2(2015-06-16)&その1
• Feature
• backlog(パラメータが(mail(proxy(と(stream(モジュールにおける(listen(ディレクティブで利用可能に
• backlog=numberはバックログキューの長さを指定するパラメータ
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 19
Nginx&1.9.2(2015-06-16)&その2
• Feature
• stream*モジュールで以下の機能が利用可能
• allow,*deny*ディレクティブ(アクセス制御)
• proxy_bind*ディレクティブ(アドレス変換)
• proxy_protocol*ディレクティブ(ProxyProtocolサポート)
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 20
Nginx&1.9.2(2015-06-16)&その3
• Feature
• nginx(コマンドに(-T(オプションが追加
• コンフィグテスト実施後、設定ファイルをダンプする
• ちなみに既存の(-t(はコンフィグテストのみ行う
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 21
Nginx&1.9.2(2015-06-16)&その4
• Bugfix
• reuseport'が正常に動作しない問題を解決
• OCSP'stapling'利用時にいくつかのケースにおいて有効期限が切れたOCSPレスポンスを返す問題を解決
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 22
感想!その1
• アツいと感じた変更点
• デフォルト"SSLv3"無効化
• upstream"内で"zone"が使える
• stream"モジュール
• OCSP"stapling"で期限切れレスポンス返しちゃうバグの解消
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 23
感想!その2
• 「新機能リリース」"→"「直後に"Bugfix」の流れが多いので新機能をすぐに利用する場合は要注意
• nginx -T"はだれかが捗る予感
• ngx_http_spdy_module"のバグ修正の頻度が減ってきた
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 24
おしまい
2015/06/22'社内プロダクト勉強会'('TAKAMURA'Narimichi 25
Recommended