share facebook facebook2 twitter menu hatena pocket slack

2016.03.14 MON

NginxでデフォルトのVirtualHostを設定する

田村 謙介

WRITTEN BY田村 謙介

NginxではリクエストのHostヘッダとserver_nameが一致しなかった場合、一番最初に読み込まれたVirtualHostの設定が適用される。
default_serverを記述することでデフォルトのVirtualHostを設定することができる。

ELBのヘルスチェックはデフォルトのVirtualHostに対してリクエストが行われる。
デフォルトのVirtualHostをそのままサービスに使用すると下記現象が発生する。
・サービスのアクセスログとELBヘルスチェックのアクセスログが混ざる
・IP制限やBasic認証を行うとELBからも見られなくなる →OutOfServiceになる
・設定ファイルが複雑になる

「デフォルトのVirtualHostとサービスのVirtualHostを分ける」ことで解決する。

[1]デフォルト用のVirtualHostを作成する
(1)設定ファイルを作る
/etc/nginx/conf.d/000-default.conf

server {
    listen 80 default_server;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

(2)ファイルを作成する

echo "index" > /usr/share/nginx/html/index.html

[2]サービス用のVirtualHostを作成する
(1)設定ファイルを作る
/etc/nginx/conf.d/001-domain.com.conf

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

元記事はこちら

NginxでデフォルトのVirtualHostを設定する

田村 謙介

田村 謙介

構築運用(虎)セクションのリーダー/ソリューションアーキテクトとして、コンサルティング・設計・構築を主に担当しています。 使用するプロダクトやサービスの思想を尊重しつつお客様の要望に応えられる「美しい設計」を日々追い求めています。