レポート

「『nginx実践入門』出版記念!執筆者らが語る nginx Tech Talks」レポート

この記事を読むのに必要な時間:およそ 3 分

Advanced nginx in Mercari​ - @kazeburo

長野雅広氏

長野雅広氏

長野雅広氏@kazeburoは,自身が勤めるメルカリでの活用方法を紹介しました。

HTTPSで1分間に120万リクエストあるメルカリでは,L7ロードバランサやログ分析基盤のフロントエンドなどにnginxを活用しているとのことです。また,nginxのアップストリームサーバの動的制御のためにngx_dynamic_upstreamという拡張モジュールを開発して利用するといった取り組みも行われています。

講演ではnginxの継続的なアップデートとTLS関連の最適化について詳しく触れました。

nginxは脆弱性への対策のためにも継続的にアップデートをするのが不可欠です。アップデートの際は久保氏作のnginx-buildで自動化しているとのことです。

TLS関連の最適化では「PFS」⁠Perfect Forward Secrecy)「TTFB」⁠Time To First Byte)が重要とのことです。

PFSは「これまでのすべての暗号化された通信を記録しておき,あとからある期間の鍵を盗むことができたとしても一定期間の通信しか復号できず,それ以前またはそれ以後に記録した通信は復号できない暗号化通信の性質」nginx実践入門』p.102より)です。これを実現するためには,絶えずMozilla Wikiなどで最新の情報を確認し,プロダクション環境に投入する前にテストを行うのが良いとのことです。

TTFBは,最初の1バイトが到着するまでの時間のことで,サイトの高速化を考える際に非常に重要な指標です。TTFBを改善するためには,TLSセッションキャッシュ,TLSセッションチケット,OCSPステープリング,TLSのレコードサイズの設定が重要で,注意点などの解説がありました。

ngx_mruby 実践入門 - GMO ペパボ 柴田博志

柴田博志氏

柴田博志氏

GMOペパボに勤務する柴田博志氏@hsbtは,mrubyを使ってnginxを制御できるエクステンションであるngx_mrubyに関しての講演を行いました。9章「Luaによるnginxの拡張」に登場するサンプルコードをすべてngx_mrubyを用いたものに書き換え,重要な点について解説するという面白いものでした。mrubyはH2OなどHTTP/2に対応しているHTTPサーバでも利用できるので応用範囲が広いとのことです。

9章ほとんどのサンプルコードをngx_mrubyを使って書き換えられており,足りない機能はパッチを作成してngx_mruby本体にPull Requestして取り込まれているそうです。書き換えたコードはGitHubのリポジトリでも公開されています。

consul-templateでnginxL7ロードバランサー自動フェイルセーフ @sion_cojp

ここからの講演はライトニングトーク形式で行われました。

湖山翔平氏

湖山翔平氏

リブセンスの湖山翔平氏@sion_cojpは,ロードバランサをApacheからnginxに移行した際,同時にアプリケーションサーバをワンクリックでメンテナンスモードにしたり,サーバ構築時に自動で追加されるようにしたいと考えたそうです。それをConsulを使って実現するデモを行いました。Qiitaのconsulとconsul-templateでAPサーバの自動切り替えに詳しく書いているそうなので,そちらを参照してください。