データベースについて勉強していましたが、実務でnginxを触る機会があったので、これを機に勉強。
参考文献
nginx基礎
- 必要な情報はkey=>valueに近い、ディレクティブといわれる構文で定義される。
(例 worker_process 1) - includeというディレクティブで他の設定ファイル(多くは子供に相当するファイル)を読み込むことができる
(例 include sites/*.conf) - あるディレクティブの中だけで有効に機能するディレクティブを定義するには下記のような、ディレクティブブロックを使う
events{
worker_process:1024;
}
※親のディレクティブは子供に自動適応される。
コアモジュール
nginxの基本的なディレクティブについて
- worker_process 同時にこなせるプロセス数。CPUのコアごとに増やしていくのが一般的。autoという設定もある。
- worker_priority ワーカプロセスの優先度を-20から19まで定義する。数字が大きいほど優先度は低い。ディフォルトはなし。-5以下にしないほうがいい。
- worker_rlimit_nofile ワーカプロセスが同時に使えるファイルの数を定義 10000が一般的。
httpモジュール
httpアクセスを定義するブロックに関して。
- http 全てのhttpアクセスに共通の要素をここに書いておく
- server 特定のホスト名(www.example.com)をnginxに認識させ、独自の設定を持たせる
- location webサイトの特定の位置に適応が可能
設定ファイルサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
server { listen 80; server_name sample.com; client_max_body_size 20M; #charset koi8-r; access_log /var/log/nginx/sample.access.log main; error_log /var/log/nginx/sample.error.log warn; proxy_buffering on; proxy_buffers 8 512k; proxy_buffer_size 256k; location / { root /var/www/html/sample.com; index index.cgi; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } |
ディレクティブ説明
- listen どのポート番号使用時に設定を有効にするかの判定。httpならば80、httpsなら443が一般的
- server_name 1つ以上のホストを与え、最初に一致したブロックを選択させる。ワイルドカードなども使用できる
- client_max_body_size クライアント要求本体サイズの上限。この上限を超えると、HTTPエラー413を変えす
- access_log/error_log アクセスログ・エラーログのパス
location 要求されたURIとマッチングされるパターンを指定して定義できる。正規表現使用可。/だけの場合はすべてに適用される。