【技術書要約】nginx実践入門のポイントを3分で押さえる
実現したいこと
nginx実践入門を読みました.
ポイントを3分で押さえられる程度にまとめました. とても良い本だったので,これをきっかけに読者が増えれば嬉しいです
やったこと
以下に各目次と簡単な要点をまとめました. ご参考にしていただければ.
nginxの概要とアーキテクチャ
nginxの用途を2つ挙げるなら?
- 静的ページを返す
- リバースプロキシとして使う
リバースプロキシとは?
- クライアントとアプリケーションサーバーの中間をつなぐサーバーのこと
Apacheとのモデルの違いは?
- ApacheはMPM(Multi Processing Module)を採用おり,prefork, worker, eventなどの複数の動作モデルを使用できるのに対し,nginxはイベント駆動のみ
Apacheとの拡張性の違いは?
- Apacheは拡張モジュール単体でビルドできるのに対し,nginxは本体のビルド時にしか拡張モジュールを組み込めない
Apacheとnginxのプロセスの違いは?
- Apacheは,preforkモデルの場合,クライアントごとにプロセスを起動し,一連の処理を並行して行うのに対し,nginxは発生したイベント毎に並行して処理していく
イベント駆動とは?
- 各イベントに対応したコールバック関数のみが実行される仕組み
I/O処理の効率化手法を3つ挙げるなら?
- I/O Multiplexing
- ノンブロッキングI/O
- 非同期I/O
I/O Muitiplexingとは?
- 複数のファイルディスクリプタを監視し,それらのどれかが使用可能になるまでプログラムを待機させること
ブロッキングi/Oとは?
ノンブロッキングI/Oとは?
非同期I/Oとは?
- ノンブロッキングI/Oと同じだが,先にエラーや完了をプログラムに通知するためのインターフェースがある
Nginxのプロセス構成は?
- マスタプロセスが一つと,ワーカープロセスが複数ある
- マスタプロセスが起動や設定を管理するので,マスタプロセスに対して特定のシグナルを送ると全体のプロセスを制御できる
インストールと起動
基本設定
設定ファイル名とその確認方法は?
- nginx.confで,確認コマンドは
$ nginx -V
ディレクティブとは?
- 設定ファイルの各項目のこと
ディレクティブの種類は?
- ;で終わるシンプルなディレクティブと,
ブロックディレクティブがある
コンテキストとは?
- ブロック内のディレクティブのこと
バーチャルサーバーとは?
- Serverブロックディレクティブで囲んだサーバーで,IP,ポート,ホスト名毎に設定できる
Rootディレクティブのデフォルト値は?
- html
MIMEタイプとは?
- Content-typeヘッダフィールドに指定されるファイルの種類と拡張子のこと.image/pngとか
ルーティングの仕組みを具体的に説明すると?
- http://www.example.com/images/example.pngにリクエストが送られてきたとき, server_name: www.example.com で,URIによる絶対パスが/images~.pngである.
root: /var/www/htmlだった場合は,/var/~/.pngにルーティングされる.listenしているポートが80以外に明示されていれば,そのポートからつながる
静的なWebサイトの構築
locationディレクティブとは?
Dos攻撃対策となるディレクティブは?
- limit_conn_zoneディレクティブで特定のIPなどから同時にコネクションする数を制限できる.
ngx_http_limit_req_moduleで時間あたりのリクエスト数を制限できる
leaky bucketアルゴリズムを説明できる?
- 10r/sで1秒に10リクエストまで許容しており,burst=50で入り切らなかった分は50までキューイングし,それでも超えたら503を返す
安全かつ高速なHTTPサーバーの構築
HTTPSとはどのレイヤーで暗号化されている?
- TLS(Transport Layer Security)
TLSを実現するために使用しているライブラリは?
- OpenSSL
暗号化スイートとは?
PFSとは?
- Perfect Forward Secrecyの略で,ある期間の鍵が盗まれたとしてもその一定期間の通信しか複合できないようにする仕組み
HSTSとは?
Webアプリケーションサーバーの構築
リバースプロキシの主な2つの役割とは?
- フロントサーバーとしてのリバースプロキシ
- アプリケーションサーバーにおけるリバースプロキシ
フロントサーバーとしてのリバースプロキシの役割を3つ挙げるなら?
Webアプリケーションサーバーにおけるリバースプロキシの役割を6つ挙げるなら?
- 静的ファイルの配信
- リクエストの書き換え
- Route53もここは担える?
- アクセス制限,不正なリクエストのフィルタリング
- gzip圧縮転送
- リクエストのロギング
- リクエストとレスポンスのバッファリング
Railsに適したサーバープロセスとその理由は?
- Unicornで,Rackインターフェースを持っているから
Unicornの弱点は?
- forkを用いたマルチプロセスにはなっているが,イベント駆動型でないため,プロセス数以上のリクエストを処理できない
RailsにUnicornを入れるためのgemは?
- unicornをそのまま.foremanもプロセス管理が楽になるから良い.
nginxでプロキシするときに,ユーザーリクエストのホスト情報をいれるためにはどうする?
- proxy_set_headerディレクティブで指定する
大規模コンテンツ配信サーバーの構築
ロードバランサの種類を2つ挙げるなら?
- TCPレベルで分散するL4ロードバランサ
- HTTPレベルで分散するL7ロードバランサ
L4ロードバランサの方式を2種類挙げるなら?
- NAT(Network Adress Translation:ネットワークアドレス変換)方式
- DSR(DIrect Server Return)方式
NAT方式を簡単に説明すると?
DSR方式を簡単に説明すると?
- アップストリームからの帰りのパケット(行きよりサイズが大きい)はロードバランサを経由しないため,トラフィックを削減できる
L7ロードバランサを簡単に説明すると?
- HTTPリクエストを解釈し,同じリクエストをアップストリームサーバーに送信するため,コンテンツの種類や内容に応じてカスタマイズ可能.
- HTTPをプロキシするため,DSR方式は使用できないが,ディスクI/OやCPUといったハードウェアの負荷削減には有効
DNSを使ってロードバランスする仕組みをなんと言う?また簡単に説明すると?
DNSラウンドロビンの弱点は?
- TTL(Time To Live パケット有効期間)の関係で,障害発生時にキャッシュのTTLが切れるまでHTTPサーバーを切り離せない
- RFC3484では,ネットワークが近いアドレスを優先的につなぐため,ネットワークがまたがるとアドレスに偏りが出る
Webサーバの運用とメトリクスモニタリング
Luaによるnginxの拡張
OpenResty
注意点
後半は個人的にまだ必要でなかったので,ほとんど流しています.
参考
以下の記事を参考にさせていただきました.
- 作者: 久保達彦,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
http://ecogis.sfc.keio.ac.jp/online/java/2002/9th/basic.htm
本記事について
本記事は,学習を目的に書かれています.
間違い,改良案などございましたら,コメントしていただけると幸いです.
基本的に編集途中ですので,何を書いてほしいかもコメントいただけると,
その情報を中心に追記します.