Ubuntu20.04でNginxにおけるロードバランサの環境構築を先日行いましたが、sorryページの実装が後回しになっておりましたので、今回の記事ではWebServerがなんからの原因でアクセスできなくなった場合に、sorryページを表示させる手順を試してみたいと思います。
Nginxでロードバランサを構築する手順については以下をご覧ください。
参考 Ubuntu20.04 NginxでロードバランスするITサービス指向エンジニアブログドキュメントルートにsorryページを作成する
nginxのドキュメントルートは以下にあります。
/usr/share/nginx/html
このディレクトリにsorryページのhtmlを作成します。
sudo vi 50x.html
中身はsorryページであることが分かれば何でもよいです。
僕はsorry wait a minuteとしました。
nginx.confファイルの設定
sorryページを作成したら、nginx.confファイルの設定を記載します。
/etc/nginx/conf.d/nginx.conf
server {
listen 80;
server_name LB.kyrieee.jp;
error_page 500 502 503 504 /50x.html; #エラー時に表示するディレクトリの設定追加
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ^~ /50x.html { #エラー時に転送する先のURI指定先を追加
root /usr/share/nginx/html;
}
}
sorryページを表示するために、nginx.confに追記した内容はコメントに記載しました。
50x.htmlは500エラーや502エラーなどのサーバー内部エラー発生時に表示します。
記述を追加したら、sudo systemctl restart nginx で再起動します。
locationディレクティブで使用する修飾子の優先度
優先度 | 修飾子 | 説明 |
---|---|---|
1 | = | 完全一致 |
2 | ~ | 正規表現(大文字小文字を区別) |
3 | ~* | 正規表現(大文字小文字を区別しない) |
4 | なし | 前方一致 |
5 | ^~ | 前方一致 |
同じ優先度の場合は上から順に評価し、マッチしたものが使われる
この状態でWebServerを2台とも停止させた状態で、lb.kyrieee.jpへアクセスすると以下のようにsorryページが表示されれば、OKです。
本記事ではnginx実践入門の本も参考にさせていただいております。
nginx実践入門 (WEB+DB PRESS plus)
Amazon.co.jp: nginx実践入門 (WEB+DB PRESS plus) : 久保 達彦, 道井 俊介: 本