設定ファイルの記述方法(コンテキストとディレクティブ)

広告

Nginx の設定は、ディレクティブと呼ばれる設定項目を使って行います。ディレクティブは設定項目と値の組み合わせで構成されます。また、ディレクティブは設定ファイルの中で記述できる場所が決まっており、この場所のことをコンテキストと呼びます。ここでは Nginx の設定ファイルの記述方法について解説します。

コンテキストとディレクティブ

Nginx の設定ファイルである nginx.conf ファイルは次のような構成になっています。

# メインコンテキスト
ディレクティブ;

# 接続に関する設定
events {
  ディレクティブ;
}

# Web サーバ全体の設定
http {
  ディレクティブ;
}

# TCP/UDP 通信に関する設定
stream {
  ディレクティブ;  
}

# メールプロキシに関する設定
mail {
  ディレクティブ;
}

ディレクティブというのは具体的な指示のことです。例えば「使用するポート番号は 80 番にする」といった指示を行う場合は listen 80; というディレクティブを記述します。

コンテキストとは、ディレクティブを記述する場所(範囲)のことです。ディレクティブごとに、どのコンテキストに記述できるかが決まっています(複数のコンテキストに記述できるものもあります)。

設定ファイルの一番外側の記述場所をメインコンテキストといいます。ここは Nginx 全体に関係するディレクティブを記述する場所で、例えばエラーログの保存先などを指定するディレクティブを記述します。

メインコンテキストのほかに eventshttpstreammail の 4 つのコンテキストを設定ファイルの一番外側に記述できます。events は接続に関する設定、http は Web サーバに関する設定、stream は HTTP 以外の TCP/UDP ベースの通信に関する設定、mail は Nginx をメールプロキシとして使用する場合の設定をそれぞれ記述します。

これらのコンテキスト内にディレクティブを記述する場合は、ブロック({ から } の間)内に記述します。

コンテキストの階層構造

設定ファイルの一番外側には 4 つのコンテキストを記述できますが、これらのコンテキストは入れ子構造になっており、より細かく影響範囲を設定することができます。

例えば http コンテキストには Web サーバ全体の設定に関するディレクティブを記述できますが、特定のサイトに関する設定を記述したい場合は server コンテキストを使用します。さらに特定のサイト内の特定の URL に対する設定を行いたい場合は location コンテキストを記述します。内側になるほど、より狭い範囲を表すコンテキストとなります。

# Web サーバ全体の設定
http {
  ディレクティブ;  

  # 特定のサイトの設定
  server {
    ディレクティブ;  

    # 特定のURLの設定
    location / {
      ディレクティブ;  
    }
  }
}

必要に応じて同じコンテキストを複数記述することができます。例えば Nginx で異なるドメインを使った複数の Web サーバを運用する場合には、サーバごとに server コンテキストを記述します。

http {
  # サイトAの設定
  server {
    server_name  AAA;
  }

  # サイトBの設定
  server {
    server_name  BBB;
  }
}

外側のコンテキストに記述した設定は内側のコンテキストにも引き継がれます。また、外側と内側の両方に記述できるディレクティブもありますが、その場合はより内側のコンテキストに記述された内容が優先されます。

設定ファイルの例

個々のディレクティブの記述方法は別のページでそれぞれ解説しますが、ここでは設定ファイルに実際にどのような内容が記述されているのかを簡単に見てみます。

worker_processes  1;        # ワーカープロセス数
error_log  logs/error.log;  # エラーログの保存場所

events {
  worker_connections  1024; # ワーカーごとの最大接続数
}

http {
  server {
    listen  80;             # ポート番号
    server_name  localhost; # サーバ名

    location / {            # / から始まる全ての URL が対象
      root  html;           # コンテンツを配置するディレクトリ
      index  index.html;    # URL の末尾にファイル名が指定されていない場合
    }
  }
}

Nginx 全体に関する設定はメインコンテキストに記述し、Web サーバに関する設定は http コンテキストに記述します。

設定ファイルでコメントを記述する

設定ファイル内でコメントを記述する場合は、 # のあとに記述してください。

worker_processes  1;  # 行の途中からコメントを記述する

# 行頭からコメントを記述する
http {
}

# から行末までがコメントとなります。複数行をまとめてコメントにするような方法(例えば /* */ のような書き方)は用意されていないです。

-- --

Nginx の設定ファイルの記述方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。