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

gzip ディレクティブ

gzip on;

クライアントにコンテンツを送る際、圧縮するかどうかを設定します。
gzipは、データをその都度圧縮するため、NginxサーバーのCPU使用率が増えます。

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を設定します。

location ブロック

http {
    ...
    server {
        ...
        location / {
            ...
        }
    }
}

URIパスに応じた設定を記述します。

root ディレクティブ

root /var/www/html;

ドキュメントルートのディレクトリを設定します。
httpやserver、locationブロックでも設定できます。

index ディレクティブ

index index.html index.htm;

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