設定ファイルに別の設定ファイルを読み込む(includeディレクティブ)

広告

Nginx の設定ファイルの中で include ディレクティブを使用すると、別に用意した設定ファイルの内容を include ディレクティブを記述した場所に展開することができます。このディレクティブを使用することで、サイト毎に別の設定ファイルを用意したり、複数のサーバで共通する部分をファイルにまとめて読み込むことができます。ここでは Nginx で include ディレクティブを使って設定ファイルに別の設定ファイルを読み込む方法について解説します。

設定ファイルの中に設定ファイルを読み込む

Nginx では通常 1 つのメイン設定ファイル(nginx.conf)が読み込まれますが、 include ディレクティブを使用すると、その中から別の設定ファイルを読み込むことができます。

例えば設定ファイルに次のように記述されていた場合で考えてみます。

worker_processes  1;

events {
  worker_connections  1024;
}

http {
  server {
    listen  80;
    server_name  www.example.com;

    location / {
      root  html_com;
      index  index.html;
    }
  }

  server {
    listen  80;
    server_name  www.example.jp;

    location / {
      root  html_jp;
      index  index.html;
    }
  }
}

サイトの数だけ server コンテキストを記述するため、多くのサイトを同じサーバ上で動かしている場合、設定ファイルが非常に大きくなります。またすべてのサイトの設定を同じファイルで管理していると誤った作業をしてしまう可能性もあります。

そこで設定ファイルの一部を別のファイルに記述し、設定ファイルの中から別のファイルを読み込むことができます。例えば www.example.com のサイトに関する設定部分を別のファイルに記述します。このファイルを conf.d/example_com.conf として保存します。

server {
  listen  80;
  server_name  www.example.com;

  location / {
    root  html_com;
    index  index.html;
  }
}

そして設定ファイルの中で、別のファイルに記述した設定を読み込みたい位置に include ディレクティブを記述します。

worker_processes  1;

events {
  worker_connections  1024;
}

http {
  include conf.d/example_com.conf;

  server {
    listen  80;
    server_name  www.example.jp;

    location / {
      root  html_jp;
      index  index.html;
    }
  }
}

同じように www.example.jp のサイトに関する設定部分を別のファイルに記述し、ファイルを conf.d/example_jp.conf として保存したあと、設定ファイルの設定を読み込みたい位置に include ディレクティブを記述します。

worker_processes  1;

events {
  worker_connections  1024;
}

http {
  include conf.d/example_com.conf;
  include conf.d/example_jp.conf;
}

このように include ディレクティブを使用することで、サイト毎の設定をそれぞれ別のファイルで管理できるようになり、また設定ファイルもコンパクトで見やすくすることができます。

includeディレクティブの記述方法

include ディレクティブの書式は次の通りです。

Syntax:   include file | mask;
Default:  —
Context:  any

読み込むファイルを、相対パスまたは絶対パスで指定します。相対パスで指定する場合は、 nginx.conf ファイルがあるディレクトリを基準にします。なお、起動時に別の設定ファイルを指定している場合は、そのファイルがあるディレクトリが基準となります。

例えば nginx.conf ファイルがあるディレクトリの中に conf.d ディレクトリを作成し、その中にある my.conf ファイルを読み込む場合は次のように記述します。(パスの区切り文字は / を使用します)。

include conf.d/my.conf;

絶対パスで指定することもできます。

include c:/nginx/conf/conf.d/my.conf;

include ディレクティブは、どのコンテキストの中でも記述できます。記述した位置に読み込んだファイルの内容が展開されます。

なお指定したファイルが見つからない場合は、 Nginx の起動時にエラーになります。

また同じコンテキストの中に複数の include ディレクティブを記述する場合に、ワイルドカード(*)を使って複数のファイルをまとめて指定することもできます。

include conf.d/*.conf;

この場合、 conf.d ディレクトリにある拡張子が .conf のファイルが include ディレクティブを記述した位置に、ファイル名の順に読み込まれて展開されます。(読み込まれる順番が重要な場合はワイルドカードを使用しないようにしてください)。

-- --

Nginx で include ディレクティブを使って設定ファイルに別の設定ファイルを読み込む方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

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