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

[code]
server {
listen 80 default_server;
server_name localhost;

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

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

[code]
echo “index” > /usr/share/nginx/html/index.html
[/code]

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

[code]
server {
listen 80;
server_name www.domain.com;
server_name domain.com;

[/code]

NginxでデフォルトのVirtualHostを設定する” への1件のフィードバック

コメントは停止中です。