nginxの紹介

31,355
-1

Published on

第10回静岡ITPro勉強会インフラ部 「nginxの紹介」資料

Published in: Technology
0 Comments
85 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
31,355
On Slideshare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
129
Comments
0
Likes
85
Embeds 0
No embeds

No notes for slide

nginxの紹介

  1. 1. 第10回  静岡ITPro勉強会  インフラ部nginxの紹介滝澤  隆史株式会社ハートビーツ  MSP事業部所属    http://heartbeats.jp/12013-‐‑‒05-‐‑‒18nginxの紹介
  2. 2. 私は誰•  ⽒氏名:  滝澤  隆史  @ttkzw•  所属:  株式会社ハートビーツ▫  サーバの構築・運⽤用や24時間365⽇日の有⼈人監視をやっている会社▫  いわゆるMSP(マネージド  サービス  プロバイダ)•  nginxとの関わり▫  所属会社の技術ブログ「nginx連載」–  http://heartbeats.jp/hbblog/nginx/▫  Software  Design  2012年年12⽉月号第2特集「⾼高速・⾼高機能HTTPサーバ  Nginx構築・設定マニュアル」22013-‐‑‒05-‐‑‒18nginxの紹介
  3. 3. アジェンダ•  nginxとは何か•  nginxで何ができるか•  apacheとは何が違うか32013-‐‑‒05-‐‑‒18nginxの紹介
  4. 4. 本⽇日の勉強会の進め⽅方•  セミナーではなく勉強会です。•  随時質問を受け付けます。•  質問がある⽅方は挙⼿手をお願いします。2013-‐‑‒05-‐‑‒18nginxの紹介4
  5. 5. 52013-‐‑‒05-‐‑‒18nginxの紹介
  6. 6. nginxとは何か•  このセッションで学んでもらうこと▫  nginxは何て読むのか?▫  nginxとは何か?▫  nginxは誰が作っているのか?▫  nginxは誰が使っているのか?▫  なぜnginxを使うのか?2013-‐‑‒05-‐‑‒18nginxの紹介6
  7. 7. nginxは何て読むのか?•  正直なところ、素直に読めないですよね2013-‐‑‒05-‐‑‒18nginxの紹介7
  8. 8. nginxは何て読むのか?•  正直なところ、素直に読めないですよね•  「んぎんくす」?▫  Googleせんせーに尋ねると「約  382,000  件」←関係ないのが混在2013-‐‑‒05-‐‑‒18nginxの紹介8
  9. 9. nginxは何て読むのか?•  正直なところ、素直に読めないですよね•  「んぎんくす」?▫  Googleせんせーに尋ねると「約  382,000  件」←関係ないのが混在•  「エンジン  エックス」(engine  x)2013-‐‑‒05-‐‑‒18nginxの紹介9
  10. 10. nginxって何?•  Webサーバ•  リバース  プロキシ  サーバ•  メール  プロキシ  サーバ2013-‐‑‒05-‐‑‒18nginxの紹介10
  11. 11. nginxは誰が作っているのか?•  イーゴリ・シソーエフ(Igor  Sysoev)⽒氏(ロシア)▫  2002年年に開発開始▫  2004年年に公開2013-‐‑‒05-‐‑‒18nginxの紹介11
  12. 12. nginxは誰が作っているのか?•  イーゴリ・シソーエフ(Igor  Sysoev)⽒氏(ロシア)▫  2002年年に開発開始▫  2004年年に公開•  Nginx,  Inc.▫  2011年年7⽉月Nginx,  Inc.設⽴立立– nginxの開発、商⽤用サポート、コンサルティングを⾏行行う法⼈人– イゴーリ・シソーエフ⽒氏は主席アーキテクト兼CTO2013-‐‑‒05-‐‑‒18nginxの紹介12
  13. 13. nginxは誰が作っているのか?•  開発者はロシアの⼈人!•  2年年くらい前までの公式⽂文書の充実度度▫  ロシア語>英語▫  Wiki(http://wiki.nginx.org/)を⾒見見るか、Googleせんせーに翻訳してもらうかするしかなかった。•  NGINX,  Inc.設⽴立立以降降は英語の公式⽂文書が充実2013-‐‑‒05-‐‑‒18nginxの紹介13
  14. 14. nginxのバージョン•  最新版(2013年年5⽉月18⽇日時点)▫  開発版(Development):– 1.5.0▫  安定版(Stable):– 1.4.1▫  以前の安定版(Legacy):– 1.2.9– 1.0.15– 0.8.552013-‐‑‒05-‐‑‒18nginxの紹介14
  15. 15. nginxのバージョン•  バージョンの形式  (0.9.0〜~)▫  X.Y.Z– X.Yはメジャーリリースバージョン– Yが偶数:  安定バージョン– Yが奇数:  開発バージョン– Zはマイナーリリースバージョン– バグフィックス– 開発版からのバックポートによる機能追加2013-‐‑‒05-‐‑‒18nginxの紹介15
  16. 16. nginxのバージョン•  過去の安定版リリース▫  0.5.25  2007-‐‑‒06-‐‑‒11▫  0.6.30  2008-‐‑‒04-‐‑‒29▫  0.7.59  2009-‐‑‒05-‐‑‒25▫  0.8.51  2010-‐‑‒09-‐‑‒27▫  1.0.0      2011-‐‑‒04-‐‑‒12▫  1.2.0      2012-‐‑‒04-‐‑‒23▫  1.4.0      2013-‐‑‒04-‐‑‒242013-‐‑‒05-‐‑‒18nginxの紹介16
  17. 17. nginxは誰が使っているのか?•  facebook,  WordPress.ORGなど多数▫  http://nginx.com/company.html•  シェア▫  アクティブサイトのシェアは13%で2位  (2013年年4⽉月)– 英国のインターネット  サービスの調査会社NETCRAFT社調べhttp://news.netcraft.com/archives/2013/04/02/april-‐‑‒2013-‐‑‒web-‐‑‒server-‐‑‒survey.html2013-‐‑‒05-‐‑‒18nginxの紹介17
  18. 18. Web  server  developers:  Market  share  of  active  sites  [%]0102030405060ApachenginxMicrosoft2013-‐‑‒05-‐‑‒18nginxの紹介18英国のインターネット  サービスの調査会社NETCRAFT社調べhttp://news.netcraft.com/archives/2013/04/02/april-‐‑‒2013-‐‑‒web-‐‑‒server-‐‑‒survey.html
  19. 19. なぜnginxを使うのか?•  を説明する前に、Webサーバの接続処理理のアーキテクチャについて確認しよう。2013-‐‑‒05-‐‑‒18nginxの紹介19
  20. 20. 接続処理理のアーキテクチャ•  よく使われているものに次の3つがある。▫  マルチプロセス  モデル▫  マルチスレッド  モデル▫  イベント駆動モデル2013-‐‑‒05-‐‑‒18nginxの紹介20
  21. 21. マルチプロセス  モデル•  クライアントからの接続毎にプロセスをフォークして処理理する。•  フォークのコストが⾼高いため、通常はプレフォーク(事前にフォークしておく)モデルを採⽤用する。▫  Apache  HTTP  Server  -‐‑‒  MPM  Prefork2013-‐‑‒05-‐‑‒18nginxの紹介21親プロセス⼦子プロセス⼦子プロセス⼦子プロセス
  22. 22. マルチプロセス  モデル•  利利点▫  メモリ空間が⼦子プロセス毎に独⽴立立しているため、スクリプト⾔言語などを組み込みやすい。– Apache  HTTP  Serverのmod_̲php2013-‐‑‒05-‐‑‒18nginxの紹介22親プロセス⼦子プロセス⼦子プロセス⼦子プロセス
  23. 23. マルチプロセス  モデル•  ⽋欠点▫  メモリ空間が共有できないため、プロセス間の情報共有が難しい。▫  同時接続数が増えると、その分だけ⼦子プロセスも増える。▫  →メモリをたくさん消費する。▫  →コンテキストスイッチのオーバーヘッドが⼤大きくなる。2013-‐‑‒05-‐‑‒18nginxの紹介23親プロセス⼦子プロセス⼦子プロセス⼦子プロセス
  24. 24. マルチスレッド  モデル•  クライアントからの接続毎にスレッドを⽣生成して処理理する。•  バリエーションとしてマルチプロセスとマルチスレッドのハイブリッドモデルもある。▫  Apache  HTTP  Server  -‐‑‒  MPM  worker2013-‐‑‒05-‐‑‒18nginxの紹介24プロセススレッドスレッドスレッド
  25. 25. マルチスレッド  モデル•  利利点▫  メモリ空間が各スレッドの間で共有できる。つまり、スレッド間で情報を共有できる。▫  マルチプロセス  モデルに⽐比べてメモリ消費量量やコンテキストスイッチのオーバーヘッドが⼩小さい。2013-‐‑‒05-‐‑‒18nginxの紹介25プロセススレッドスレッドスレッド
  26. 26. マルチスレッド  モデル•  ⽋欠点▫  メモリ空間を共有しているため、スクリプト⾔言語を組み込めないことがある。▫  同時接続数が増えると、その分だけスレッド数も増える。▫  →コンテキストスイッチのオーバーヘッドが⼤大きくなる。(メモリ空間の切切り替えがない分、マルチプロセス  モデルよりは⼩小さい)2013-‐‑‒05-‐‑‒18nginxの紹介26プロセススレッドスレッドスレッド
  27. 27. イベント駆動モデル•  クライアントからの接続毎にイベント処理理を⾏行行う。•  1プロセスは1CPUしか使えないので、CPUの数だけプロセスを⽤用意するワーカーモデルが使われている。▫  Apache  HTTP  Server  -‐‑‒  MPM  event▫  nginx2013-‐‑‒05-‐‑‒18nginxの紹介27プロセスイベント処理理ループ
  28. 28. イベント駆動モデル•  利利点▫  メモリ空間が共有できるというか1つ。▫  同時接続数が増えてもプロセス数やスレッド数が増えることはない▫  →メモリ消費量量やコンテキストスイッチのオーバーヘッドが⼩小さい。2013-‐‑‒05-‐‑‒18nginxの紹介28プロセスイベント処理理ループ
  29. 29. イベント駆動モデル•  ⽋欠点▫  メモリ空間を1つであるため、スクリプト⾔言語を組み込めないことがある。2013-‐‑‒05-‐‑‒18nginxの紹介29プロセスイベント処理理ループ
  30. 30. なぜnginxを使うのか?•  「C10K問題」(クライアント1万台問題)▫  The  C10K  problemhttp://www.kegel.com/c10k.html▫  マルチプロセス  モデルやマルチスレッド  モデルのWebサーバ– 同時接続数が増える。– →プロセス数やスレッド数が増える。– →コンテキストスイッチのオーバーヘッドが⼤大きくなる。– →本来の処理理に時間が割けなくなる。2013-‐‑‒05-‐‑‒18nginxの紹介30
  31. 31. なぜnginxを使うのか?•  イベント駆動モデル▫  コンテキストスイッチのオーバーヘッドが⼩小さい。→「C10K問題」に対する解決策▫  メモリ空間は1つであるため、同時接続数が増えてもメモリの消費量量が⼩小さい。→仮想マシンのインスタンスを⼩小さくできる。→リソースの効率率率的な利利⽤用2013-‐‑‒05-‐‑‒18nginxの紹介31
  32. 32. このセッションのまとめ•  nginxの読み⽅方は「エンジン  エックス」•  nginxは▫  Webサーバ▫  リバース  プロキシ  サーバ▫  メール  プロキシ  サーバ•  nginxの開発者は▫  イーゴリ・シソーエフ(Igor  Sysoev)⽒氏(ロシア)▫  Nginx,  Inc.•  シェアは13%で2位  (アクティブサイト)2013-‐‑‒05-‐‑‒18nginxの紹介32
  33. 33. このセッションのまとめ•  接続処理理のアーキテクチャ▫  マルチプロセス  モデル▫  マルチスレッド  モデル▫  イベント駆動モデル•  nginxを使う理理由▫  nginxはイベント駆動モデル– メモリ消費し尽くさない。– コンテキストスイッチのオーバーヘッドが⼤大きくない。▫  →リソースを効率率率的に利利⽤用できる2013-‐‑‒05-‐‑‒18nginxの紹介33
  34. 34. 2013-‐‑‒05-‐‑‒18nginxの紹介34
  35. 35. nginxで何ができるか•  このセッションで学んでもらうこと▫  機能とモジュール▫  ウェブサーバ▫  プロキシーサーバ2013-‐‑‒05-‐‑‒18nginxの紹介35
  36. 36. 機能とモジュール•  nginxの機能はモジュールにより実装されている•  モジュールを追加することにより機能を追加できる。2013-‐‑‒05-‐‑‒18nginxの紹介36
  37. 37. 機能とモジュール•  nginxの機能を把握するにはモジュールを確認するのがよい▫  公式サイトのマニュアルもモジュール毎に説明がある•  nginx  1.4.1のモジュール⼀一覧を⾒見見てみよう▫  古いバージョンには存在しないモジュールもあるよ•  次ページ以降降の凡例例)▫  ◎:  基本モジュール▫  ○:  標準モジュール(デフォルト有効)▫  △:  オプションモジュール(デフォルト無効)2013-‐‑‒05-‐‑‒18nginxの紹介37
  38. 38. 基本モジュールモジュール名 説明◎ ngx_̲http_̲core_̲module HTTPコアモジュール◎ ngx_̲http_̲log_̲module アクセスログ◎ ngx_̲http_̲static_̲module 静的ファイル◎ ngx_̲http_̲index_̲module /で終わるリクエストに対する処理理◎ ngx_̲http_̲chunked_̲filter_̲module Content-‐‑‒Encoding:  chunkedの処理理フィルタ◎ ngx_̲http_̲range_̲filter_̲module Content-‐‑‒Rangeの処理理フィルタ◎ ngx_̲http_̲headers_̲filter_̲module ヘッダの追加、Expires,  Cache-‐‑‒Controlの制御のフィルタ◎ ngx_̲http_̲not_̲modified_̲filter_̲moduleNot  Modifiedの処理理フィルタ2013-‐‑‒05-‐‑‒18nginxの紹介38ウェブサーバとして基本機能を提供するモジュール
  39. 39. 通信、コネクションモジュール名 説明△ ngx_̲http_̲ssl_̲module SSL△ ngx_̲http_̲spdy_̲module SPDY  (1.4.0〜~)○ ngx_̲http_̲limit_̲conn_̲module 同時接続数制御○ ngx_̲http_̲limit_̲req_̲module リクエストレート制御2013-‐‑‒05-‐‑‒18nginxの紹介39SPDY•  SPDY  Protocol  Draft  2サポート•  nginx  1.4.0以降降•  要OpenSSL  1.0.1以降降•  "Next  Protocol  Negotiation"  TLS  extensionTLS  v1.1,  v1.2•  nginx  1.0.12以降降•  要OpenSSL  1.0.1以降降
  40. 40. リクエスト、レスポンスモジュール名 説明○ ngx_̲http_̲browser_̲module User-‐‑‒Agentの取得○ ngx_̲http_̲referer_̲module Refererのチェック△ ngx_̲http_̲realip_̲module LBやプロキシーのバックエンドとして利利⽤用時にクライアントIPアドレスの取得○ ngx_̲http_̲rewrite_̲module リクエストURIの書き換えやリダイレクトやレスポンスの制御○ ngx_̲http_̲empty_̲gif_̲module 1ピクセル透過GIFの⽣生成△ ngx_̲http_̲gzip_̲static_̲module gzip圧縮ファイルの利利⽤用△  ngx_̲http_̲gunzip_̲module gzip圧縮ファイルの伸張2013-‐‑‒05-‐‑‒18nginxの紹介40
  41. 41. フィルタモジュール名 説明○ ngx_̲http_̲gzip_̲module gzipによるレスポンスの圧縮○ ngx_̲http_̲charset_̲module ⽂文字エンコーディングの指定、⽂文字コード変換○ ngx_̲http_̲userid_̲module ユーザーのトラッキング△ ngx_̲http_̲addition_̲module テキストの追加△ ngx_̲http_̲sub_̲module テキストの置換△ ngx_̲http_̲xslt_̲module XSLT△ ngx_̲http_̲image_̲filter_̲module 画像変換○ ngx_̲http_̲ssi_̲module SSI△ ngx_̲http_̲perl_̲module SSIにPerl組み込み2013-‐‑‒05-‐‑‒18nginxの紹介41
  42. 42. アクセス制御モジュール名 説明○ ngx_̲http_̲access_̲module クライアントIPアドレスによる制御○ ngx_̲http_̲auth_̲basic_̲module ベーシック認証による制御○ ngx_̲http_̲geo_̲module クライアントの地理理情報の取得△ ngx_̲http_̲geoip_̲module GeoIPによるクライアントの地理理情報の取得△ ngx_̲http_̲secure_̲link_̲module ⼀一時的なリンクの利利⽤用による認証2013-‐‑‒05-‐‑‒18nginxの紹介42ダイジェスト認証はサポートしていない。
  43. 43. その他モジュール名 説明○ ngx_̲http_̲split_̲clients_̲module A/Bテスト⽀支援機能○ ngx_̲http_̲map_̲module 変数のマッピング○ ngx_̲http_̲autoindex_̲module ディレクトリ⼀一覧△ ngx_̲http_̲random_̲index_̲module インデックスファイルとして返すファイルをランダムに変更更△ ngx_̲http_̲flv_̲module FLV△ ngx_̲http_̲mp4_̲module mp4  (H.264/AAC)△ ngx_̲http_̲dav_̲module DAV△ ngx_̲http_̲stub_̲status_̲module ステータス情報△ ngx_̲http_̲degradation_̲module 低メモリ状態でエラーを返す2013-‐‑‒05-‐‑‒18nginxの紹介43
  44. 44. プロキシー、アップストリームモジュール名 説明○ ngx_̲http_̲proxy_̲module プロキシー○ ngx_̲http_̲fastcgi_̲module FastCGI○ ngx_̲http_̲uwsgi_̲module uWSGI○ ngx_̲http_̲scgi_̲module SCGI○ ngx_̲http_̲memcached_̲module Memcached○ ngx_̲http_̲upstream_̲ip_̲hash_̲module upstream○ ngx_̲http_̲upstream_̲least_̲conn_̲module upstream○ ngx_̲http_̲upstream_̲keepalive_̲module upstream2013-‐‑‒05-‐‑‒18nginxの紹介44
  45. 45. メールモジュール名 説明◎ ngx_̲mail_̲core_̲module メールプロキシーのコアモジュール。◎ ngx_̲mail_̲proxy_̲module◎ ngx_̲mail_̲auth_̲http_̲module○ ngx_̲mail_̲pop3_̲module POP3○ ngx_̲mail_̲imap_̲module IMAP○ ngx_̲mail_̲smtp_̲module SMTP△ ngx_̲mail_̲ssl_̲module SSL2013-‐‑‒05-‐‑‒18nginxの紹介45
  46. 46. 開発、デバッグモジュール名 説明△ ngx_̲google_̲perftools_̲module Google  Performance  Tools△ ngx_̲cpp_̲test_̲module2013-‐‑‒05-‐‑‒18nginxの紹介46
  47. 47. 機能とモジュール•  機能の追加はビルドするときに組み込む▫  DSO(動的共有オブジェクト)には対応していないため、後から動的に追加できない。▫  ビルド時のconfigureスクリプトに使いたい機能のモジュールを指定する。–  ./configure 
--with-http_spdy_module 
--add-module=$HOME/src/lua-nginx-module-0.8.12013-‐‑‒05-‐‑‒18nginxの紹介47
  48. 48. 機能とモジュール•  組み込まれているモジュールを調べる⽅方法▫  "nginx  –V"でconfigure時のオプションを表⽰示2013-‐‑‒05-‐‑‒18nginxの紹介48$  nginx  -‐‑‒Vnginx  version:  nginx/1.4.1built  by  gcc  4.6.1  (Ubuntu/Linaro  4.6.1-‐‑‒9ubuntu3)  TLS  SNI  support  enabledconfigure  arguments:  -‐‑‒-‐‑‒prefix=/usr/local/nginx  -‐‑‒-‐‑‒error-‐‑‒log-‐‑‒path=/var/log/nginx/error.log  -‐‑‒-‐‑‒http-‐‑‒client-‐‑‒body-‐‑‒temp-‐‑‒path=/var/lib/nginx/body  -‐‑‒-‐‑‒http-‐‑‒fastcgi-‐‑‒temp-‐‑‒path=/var/lib/nginx/fastcgi  -‐‑‒-‐‑‒http-‐‑‒log-‐‑‒path=/var/log/nginx/access.log  -‐‑‒-‐‑‒http-‐‑‒proxy-‐‑‒temp-‐‑‒path=/var/lib/nginx/proxy  -‐‑‒-‐‑‒http-‐‑‒scgi-‐‑‒temp-‐‑‒path=/var/lib/nginx/scgi  -‐‑‒-‐‑‒http-‐‑‒uwsgi-‐‑‒temp-‐‑‒path=/var/lib/nginx/uwsgi  -‐‑‒-‐‑‒lock-‐‑‒path=/var/lock/nginx.lock  -‐‑‒-‐‑‒pid-‐‑‒path=/var/run/nginx.pid  -‐‑‒-‐‑‒user=nginx  -‐‑‒-‐‑‒group=nginx  -‐‑‒-‐‑‒with-‐‑‒http_̲ssl_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲spdy_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲realip_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲addition_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲xslt_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲image_̲filter_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲geoip_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲sub_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲dav_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲flv_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲mp4_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲gunzip_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲gzip_̲static_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲random_̲index_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲secure_̲link_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲degradation_̲module  -‐‑‒-‐‑‒with-‐‑‒http_̲stub_̲status_̲module  -‐‑‒-‐‑‒add-‐‑‒module=/home/taki/src/ngx_̲pagespeed-‐‑‒release-‐‑‒1.5.27.2-‐‑‒beta  -‐‑‒-‐‑‒add-‐‑‒module=/home/taki/src/ngx_̲devel_̲kit-‐‑‒0.2.18  -‐‑‒-‐‑‒add-‐‑‒module=/home/taki/src/lua-‐‑‒nginx-‐‑‒module-‐‑‒0.8.1  -‐‑‒-‐‑‒with-‐‑‒pcre=/home/taki/src/pcre-‐‑‒8.32  -‐‑‒-‐‑‒with-‐‑‒pcre-‐‑‒jit  -‐‑‒-‐‑‒with-‐‑‒openssl=/home/taki/src/openssl-‐‑‒1.0.1e
  49. 49. ウェブサーバ•  ウェブサーバとして必要な機能はほとんど実装している。•  原則としては静的コンテンツのみを扱う▫  例例外– SSI– SSIによるPerlの組み込み(実験的実装)▫  動的コンテンツはプロキシー/アップストリーム機能を通じて扱う。2013-‐‑‒05-‐‑‒18nginxの紹介49
  50. 50. プロキシーサーバ•  バックエンド(アップストリーム)に対するプロキシーとキャッシュ機能▫  HTTP/HTTPS▫  FastCGI▫  SCGI▫  uWSGI▫  Memcached•  動的コンテンツに対するプロキシーとしてよく使われる。2013-‐‑‒05-‐‑‒18nginxの紹介50
  51. 51. Webアプリケーションとの連携2013-‐‑‒05-‐‑‒18nginx⼊入⾨門51Webブラウザ nginxWebアプリケーションサーバhttp(s)http(s)FastCGISCGIuWSGIWebアプリWebアプリケーションサーバに対するプロキシーサーバとして動作
  52. 52. 動的コンテンツへの対応例例•  CGI▫  CGIをFastCGIラッパーspawn-‐‑‒fcgiで動かし、nginxはFastCGI経由でアクセスする。▫  CGIをuWSGI経由で動かし、nginxはuWSGI経由でアクセスする。•  FastCGI対応アプリケーションサーバ▫  nginxはFastCGI経由でアクセスする。2013-‐‑‒05-‐‑‒18nginxの紹介52
  53. 53. 動的コンテンツへの対応例例•  PHP▫  PHPをPHP-‐‑‒FPMで動かし、nginxはFastCGI経由でアクセスする。•  Ruby/RACK,  Ruby  on  Rails▫  unicorn経由で動かし、nginxはHTTPプロキシーとしてアクセスする。▫  passengerをnginxに組み込んでアクセスする。2013-‐‑‒05-‐‑‒18nginxの紹介53
  54. 54. 動的コンテンツへの対応例例•  Python/WSGI▫  gunicorn経由で動かし、nginxはHTTPプロキシーとしてアクセスする。▫  uWSGI経由で動かし、nginxはuWSGI経由でアクセスする。•  Perl/PSGI▫  Starman経由で動かし、nginxはHTTPプロキシーとしてアクセスする。2013-‐‑‒05-‐‑‒18nginxの紹介54
  55. 55. このセッションのまとめ•  nginxの機能▫  ウェブサーバ– 静的コンテンツ▫  プロキシーサーバ– 動的コンテンツ•  動的コンテンツの対応例例2013-‐‑‒05-‐‑‒18nginxの紹介55
  56. 56. 2013-‐‑‒05-‐‑‒18nginxの紹介56
  57. 57. apacheとは何が違うのか•  メモリの消費量量▫  フットプリントの⼩小ささ▫  apache  2.4からはeventのMPMがあるが。•  同時アクセス数▫  C10K問題を意識識した設計•  速度度▫  静的ファイルは速い。▫  動的コンテンツはmod_̲*で組み込んだapacheのprefork  MPMの⽅方がオーバーヘッドがないので速い。2013-‐‑‒05-‐‑‒18nginxの紹介57
  58. 58. 2013-‐‑‒05-‐‑‒18nginxの紹介58

×