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

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を設定する」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

w

%s と連携中