仮想サーバ(バーチャルホスト)の設定(serverコンテキスト)

広告

Nginx を Web サイトとして使用する場合、 1 つの Nginx サーバで複数の Web サイトを公開することができます。このとき、それぞれの Web サイト毎に仮想サーバ(バーチャルホスト)を用意しますが、その定義に使用されるのが server コンテキストです。ここでは Nginx で server コンテキストを使って仮想サーバを定義する方法について解説します。

serverコンテキストとは

Nginx では 1 つのサーバで複数の Web サイトを公開できます。具体的には、それぞれの Web サイトごとに仮想サーバを作成します。この仮想サーバの定義に使用されるのが server コンテキストです。 server コンテキストの書式は次の通りです。

Syntax:   server { ... }
Default:  —
Context:  http

server コンテキストは http コンテキストに記述します。基本的には 1 つのドメイン名に対して 1 つの仮想サーバを作成しますが、複数のドメインを 1 つの仮想サーバでまとめて管理することも可能です。

http {
  server {
    # ・・・
  }

  server {
    # ・・・
  }

  server {
    # ・・・
  }
}

それぞれの仮想サーバのコンテキスト内で、どの IP アドレスとポート番号でリクエストを受け付けるのかを listen ディレクティブで、そしてどのドメイン名を処理するのかを server_name ディレクティブで設定します。

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

  server {
    listen 192.168.0.1:80;
    server_name example.jp;
  }
}

クライアントから Nginx サーバへリクエストを受け取ると、まず listen で IP アドレスとポートを絞り込み、次に server_name でドメイン名を照合することで、処理を行う仮想サーバが決定されます。

server ブロックには、他にリクエストされたパス(URL の後半部分)に応じてどのようなデータを返すかを location コンテキストを使って定義します。

http {
  server {
    listen 80;
    server_name example.com;
    location / {
      root  html_com;
      index  index.html;
    }
  }
}

location コンテキストについては次のページで解説します。

-- --

Nginx で server コンテキストを使って仮想サーバを定義する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

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