Nginxの設定ファイルを作る
NginxをWebサーバーとして利用するための最低限、必要な設定を記述した設定ファイルを作成します。
Nginxの設定ファイルは、/etc/nginx/nginx.confです。
user ディレクティブ
user nginx;
worker processを起動するユーザーを設定します。
worker_processes ディレクティブ
worker_processes 1;
worker processの数を設定します。
worker processは、サーバーのCPU(コア)数以下にします。
例えば、さくらVPS 1Gは仮想コア2なので、2まで設定できます。
コマンド(grep processor /proc/cpuinfo |wc)で調べることもできます。
error_log ディレクティブ
error_log /var/log/nginx/error.log warn;
エラーログの出力先とファイル名、ロギングレベルを設定します。
pid ディレクティブ
pid /var/run/nginx.pid;
NginxのmasterプロセスのプロセスIDを保存するファイルの出力先を設定します。
event ブロック
events { ... }
Eventモジュールに関する項目を設定します。
最大コネクション数やリクエストを同時に受け付けられるようにするかどうかといったパフォーマンスに関する項目を設定します。
worker_connections ディレクティブ
events { worker_connections 1024; }
1つのworker processが同時に処理できる最大コネクション数を設定します。
初期値は512です。
http ブロック
http { ... }
HTTPモジュール、すなわち、Webサーバーに関する項目を設定します。
include ディレクティブ
include /etc/nginx/mime.types;
外部の設定ファイルを読み込みます。
MIMEタイプとファイル拡張子の組み合わせを設定したファイルを読み込みます。
default_type ディレクティブ
default_type application/octet-stream;
mime.typesファイルで拡張子からMIMEタイプが決定できなかった場合、適用されるMIMEタイプを設定します。
初期値はtext/plainです。
log_format ディレクティブ
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 ディレクティブ
access_log /var/log/nginx/access.log main;
アクセスログのパスやファイル名、出力する書式を設定します。
初期値はcombinedです。
sendfile ディレクティブ
sendfile on;
コンテンツファイルの読み込みとクライアントへのレスポンス送信にsendfileシステムコールを使うかどうかを設定します。
sendfileシステムコールを使うと、ファイルのコピーをカーネル空間内で行うようになり、パフォーマンスが改善されます。
初期値はoffです。
tcp_nopush ディレクティブ
tcp_nopush on;
レスポンスの送信にTCP_CORKソケットオプションを使用するかどうかを設定します。
レスポンスヘッダとファイルの内容をまとめて送るようになり、少ないパケット数で送ることができるようになります。
初期値はoffです。
tcp_nopushを有効にするには、sendfileを有効にしておく必要があります。
keepalive_timeout ディレクティブ
keepalive_timeout 75;
サーバー側のキープアライブのタイムアウト時間を設定します。
キープアライブについては、こちらに丁寧に教えてくれるサイトがあります。 Webサーバのkeepaliveとは - woshidan's loose leaf
server ブロック
http { ... server { ... } }
バーチャルサーバーに関する項目を設定します。
listen ディレクティブ
listen 80 default_server; listen [::]:80 default_server;
リクエストを受け付けるIPアドレスやポート番号を設定します。
server_name が host と一致しない場合は、最初に読み込まれた設定を使用します。
server_name が host と一致しない場合の挙動を、default_serverパラメータを使って、明示的に設定しておきます。
[参考] How nginx processes a request
server_name ディレクティブ
server_name littlebets.biz;
バーチャルサーバーのホスト名を設定します。
error_page ディレクティブ
error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
指定されたレスポンスコードに対して表示されるエラーページのURIを設定します。
設定ファイル(/etc/nginx/nginx.conf)
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; include /usr/share/nginx/modules/*.conf; 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 75; gzip on; server { listen 80; server_name littlebets.biz; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location / { root /var/www/html; index index.html index.htm; } } }
詳細は、Nignxのドキュメントを参照してください。
Alphabetical index of directives