Nginxの設定とか

そもそもNginxとは
Webサーバーの1つ。
(1)静的なコンテンツのWebサーバー:画像、html/css、ダウンロードファイル:4章
(2)動的なコンテンツのWebサーバー:ソフトウェア(webアプリケーション)と接続して使われる:5章
(3)ロードバランサ、リバースプロキシ:7章
リバースプロキシ・ロードバランサーとは
クライアントからのWebアクセスを別のサーバーに転送するサーバー。
複数の転送先に負荷を分散するリバースプロキシをロードバランサーと呼ぶ。
※WebサーバーはApache、ロードバランサーだけNginxみたいなことも出来るヨ。またその逆も可能だし当然、両方NginxもOK。
以下参考文献
参考

Nginxの内部の構造とインストール
2つのプロセス:masterとworker
『masterプロセス』はroot動作。
設定ファイル読み込み+設定やworkerの起動、監視を担当。ソケットの待受を設定。
『workerプロセス』は一般ユーザー権限で動作。
ネットワーク処理のイベントループを処理(?)、ソケットを使って接続、HTTPやSSL/TLSのプロトコル処理も担当。ネットワークI/OやファイルI/Oを実施。
ソケットとは?以下、TODO
イベントループとは?
ネットワークI/O、ファイルI/Oの多重化とは?
前提としてI/OはメモリやCPUに比べると遅い。だから、I/Oがボトルネックにならないように多重化する。
Nginxのモジュールとは?
機能ごとにモジュールに分かれている。
-
静的に組み込まれたモジュール
-
動的に組み込まれたモジュール
インストール

Nginxのディレクトリ構造
とりあえず設定ファイルのあるetc/nginx
下のファイルを意識!!
nginx.conf
ファイルは最初に読み込まれるファイルで、ここから他の設定ファイルも読みに行く!
次にアクセスログの/var/log/nginx/access.log
とエラーログの/var/log/nginx/error.log
!
ログのローテートは/etc/logrotate.d/nginx
のハズ!

前提:HTTPの復習
Hostヘッダのことは載ってない
P.40
HostヘッダはURLのホスト名とポート番号の部分を表す。Hostヘッダの中身によって応答するコンテンツを変えることで1つのWebサーバーが複数ホスト名のWebサーバーを兼業出来る。この時のそれぞれのホスト名のWebサーバーをバーチャルホストと言う。(実際のWebサーバーは1つだしね)
Keep-Aliveとは
HTTP/1.0までは1つのリクエスト-1つのレスポンスで都度、TCPの接続を閉じていた。
HTTP/1.1からは1回の接続で複数のリクエスト/レスポンスを処理出来る。これをKeep-Aliveと言う。
リクエストヘッダ・レスポンスヘッダでConnection:
に設定。
チャンク分割
Websocket復習

静的なコンテンツのWebサーバーとしてのNginx

Nginxの設定ファイル その1
用語
-
ディレクティブ
設定項目のこと。;
(セミコロン)で終わるのと、{ }
で囲ったコンテキスト -
コンテキスト
どのブロックにも囲まれていない。mainコンテキスト。
{ディレクティブ名}コンテキスト。
ちなみにhttpコンテキストはmainコンテキスト、serverディレクティブはmainコンテキストの中にしか書けない。 -
モジュール
モジュール = nginxの構成単位
設定ファイルはモジュール単位で記述する
??:コンテキストとは違うの?
- include
別の設定ファイルを読み込み出来る

Nginxの設定ファイル その2
mainコンテキスト
user nginx-taro;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid
- workerプロセス
workerプロセス数の設定。
I/Oの多重化処理により同時に複数のリクエストを処理出来る。
だが、シングルスレッドで動作するため、CPUはプロセスにつき1個しか使われない。なのでコア数程度に指定するのが良い。
以下の様に設定するとコア数程度になる。
worker_processes auto;
- eventsコンテキスト
worker_connectionsは1つのworkerプロセスが同時に受け付けられる(リクエスト/レスポンス)接続数。
※リバースプロキシで使う場合はBEとも通信するので1回のアクセスで2つ使う
events {
worker_connections 1024;
}

メモ locationディレクティブ
URIのパス毎の設定を記述