設定ファイルの概要

nginxの設定ファイルであるnginx.confの全体構成と用語について説明します。

ディレクティブ(directive)

nginx.confの構成
設定項目A 設定値1;
設定項目B 設定値2;
     :
# 設定項目X 設定値x;   この行はコメントです。

events {
    設定項目C  設定値3;
          :
}

http {
    server {
        設定項目D  設定値4;
                :
        location 設定値5 {
            設定項目E 設定値6;
                :
        }
    }
}
						

※.:は何かしらの「設定項目 設定値;」形式を割愛しています。

nginx.confを分割しない場合上記のような形式で設定項目と設定値を表現します。
この設定項目を「ディレクティブ(directive)」と呼びます。和訳すると、「命令」「指令」を意味します。
「ディレクティブ」又は「設定項目」で良いと思います。

ディレクティブは、大きく2つに分類されます。

  • 基本ディレクティブ(simple directive)
    「 設定項目 設定値; 」形式を意味します。
  • ブロックディレクティブ(block directive)
    「 設定項目A { 設定項目B 設定値b; } 形式のように波括弧{}で囲った一連の設定項目とその設定値を意味します。

nginx.conf及び分割したconf.d/default.confなどのファイルは基本ディレクテイブとブロックディレクティブで構成されます。

ブロックディレクティブが波括弧{}内に他のディレクティブを定義できる場合、コンテキスト(context)と呼びます。
コンテキストは、events、http、server、locationディレクティブが該当します。

コンテキスト外の構成ファイルに置かれたディレクティブは、メインコンテキスト(main context)とみなされます。
eventsとhttpディレクトリブは、メインコンテキストに属し、sererはhttpに、locationはserverに属します。

nginxの設定ファイルは、タブ区切り文字及び複数の半角スペースを1つの半角スペースとして解釈します。
ディレクティブ及びその値の区切り文字は、半角スペース(タブも可能ですが)で区切ります。

ディレクティブの終了文字は「;(セミコロン)」になります。

コメント

nginxの設定ファイルのコメント行は、「#」で開始します。

nginx.confの構成
# 設定項目X 設定値x;   この行はコメントです。

events {
    設定項目C  設定値3;
	# 設定項目C1 設定値c1;   この行もコメントです。
}
	:
						

nginxの設定ファイルは、環境別(本番、ST、ITなど)にgitなどのバージョンアップ管理システムに管理させ、
リリース毎にバージョン管理システムにコミットし、設定ファイルを管理します。
このように管理することで、nginxサーバーの設定の履歴を閲覧することができます。
結果として、設定ファイルに過去の不要なコメント行を残す必要がありません。

設定ファイルに今の設定値に対するコメントのみ記載して下さい。

設定ファイルの分割

設定ファイルの分割図デフォルト

Ubuntuにapt-getを利用してnginxをインストールした場合には、
上記図のようにhttpコンテキストのincludeディレクテイブに
/etc/nginx/conf.d以下の拡張子.confのファイルを読み込むように定義されています。

nginx.confの抜粋
http {
    include /etc/nginx/conf.d/*.conf;
}						

中小規模のサイトでは、上記デフォルトの分割方法で十分運用できると思います。

次にバーチャルホストを多く持つ大規模なサイトでは、以下のようにsites-ディレクトリを利用します。
前頁で説明したsites-enabledとsites-availableの例です。

設定ファイルの分割図
nginx.confの変更箇所
http {
    #include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}						

この設定により、/etc/nginx/sites-enabledに作成されたシンボリックリンクに対する設定ファイルが読み込まれます。
上記概要図の例では、「gakumon.org.conf」のシンボリックリンクを作成していないので、バーチャルホストgakumon.orgは公開されません。

規模問わず、nginx.confの設定ファイルのhttpコンテキスト内のserverコンテキストは、
バーチャルホスト別(serverコンテキスト別)に設定ファイルを作成し、includeディレクティブで読み込みます。