nginxの設定ファイルnginx.confのさわりの部分をまとめました。
nginx.confの初期状態
だいたいこんな状態になっているかと思います。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
ディレクティブ
ディレクティブとはuser foo;とかevents{}とかhttp{}などのnginx.confの基本的な構成要素。
;(セミコロン)で終了ものと{}(ブロック)で囲むものがあり、
{}で囲われた箇所をコンテキストと呼び、そのブロック内のみで有効
どのブロックにも囲われていないところはmainコンテキストとして扱われる。
user
nginxを起動すると以下の3つのプロセスが起動します。
- master process
- worker process
- cache manager process
その中でmaster process以外を起動するユーザを設定します。
worker process
Nginxがシングルスレッドで動作するため、コア数に合わせて設定しておく。
autoに指定するとコア数を設定してくれる。
※おまけ
$ grep physical.id /proc/cpuinfo | sort -u | wc -l
このdockerコンテナ(nginx)は物理CPUが2つあるという事です。
仮想マシンの物理CPUが2つとはどういう事なのでしょうか?
$ grep cpu.cores /proc/cpuinfo | sort -u
このdockerコンテナのCPUごとのコア数は1ということがわかりました。
$ grep processor /proc/cpuinfo | wc -l
redhatのサイトでは
この3つの数字の中で一番重要で、OSが指定したマイクロ秒で動作できるCPUの数である。
とのこと
events
eventモジュールの定義ができる。
eventモジュールは以下の3つ
worker_connections
worker_connections 512;
一つのworker processが同時に処理できる接続数です。
※worker process:ユーザのリクエストを処理する。
http
ログの出力先などwebサーバとしてのメイン機能を定義
また、すべての設定をnginx.confに定義するとファイルが膨れ上がってしまうので
include /etc/nginx/conf.d/*.conf
と設定ファイルを分けています。
今回の記事で参考にしたのは以下です。ありがとうございます
Nginx設定のまとめ
nginxの設定ファイル nginx.conf の読み方 超入門
また、以下のURLから無料でオライリー社のComplete NGINX Cookbookがダウンロードできます。英語の勉強がてらにいかがでしょうか。
[O'Reilly Ebook] Complete NGINX Cookbook