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;
...

AWS Marketplace AMIから起動したインスタンスのRootVolumeを他インスタンスにアタッチする方法

AWS MarketplaceのAMIから起動したインスタンスのRootVolumeはRootVolume(/dev/sda)以外でアタッチすることができない。
「Error attaching volume: ‘vol-xxxxxxxx’ with Marketplace codes may not be attached as a secondary device.」

オペレーションミスをしてサーバを閉じ込めてしまった場合の対処方法
(1)当該RootVolumeのスナップショットを取得する
(2)スナップショットをAWS MarketPlace 管理用アカウント(ID: 6795-9333-3241)に共有する
(3)AWSサポートに下記情報と制限を解除して欲しい旨を伝える
・スナップショットのID
・スナップショットが保存されているリージョン
・対象ボリューム/インスタンスのベースとなるAMIのID
・当該AMIのプロダクトバージョン

Red Hat Enterprise Linux (RHEL) 6 の場合
https://aws.amazon.com/marketplace/pp/B007ORSS8I?ref=cns_srchrow
Product Details
Version: 6.5
Available on AWS Marketplace Since: 03/26/2012

CentOS 6 の場合
https://aws.amazon.com/marketplace/pp/B00A6KUVBW/ref=cns_srchrow
Product Details
Version: 6 – 2014-09-29
Available on AWS Marketplace Since: 11/13/2012

(4)祈る
(5)AWSサポートから制限が解除されたスナップショットが共有される
(6)スナップショットからEBSを作成する
(7)作成したEBSを他インスタンスにアタッチする
(8)マウントし復旧作業する

普通じゃない「ssh: connect to host [IPアドレス] port 22: Connection refused」

サーバ管理者なら誰しも一度は出会ったことのある絶望的なエラー
「ssh: connect to host [IPアドレス] port 22: Connection refused」

別サーバにRootVolumeをマウントして
(1)sshd_configあってる
(2).ssh/authorized_keysあってる
(3)ネットワークまわりあってる
(4)FWまわりあってる

困った。

ログには「fatal: /var/empty/sshd must be owned by root and not group or world-writable.」

結果、/var/empty/sshdは711じゃないといけないらしい。

# ls -ld /var/empty/sshd/
drwx--x--x. 2 root root 4096 2014-11-13 17:54 /var/empty/sshd/