Elastic Beanstalkでインスタンス入れ替え後にnginxのデフォルトの画面が表示されてしまう問題の対応
Elastic Beanstalkでインスタンス入れ替え後にnginxのデフォルトの画面が表示されてしまう問題の対応
設定内容
基本的には以下の内容を参考に設定していました。ただし、nginxの設定をカスタムするために。.ebextensions/以下にnginxの設定ファイルを追加していました。
config.ru
require './filet'
run Sinatra::ApplicationNginxの設定は以下.ebextensions/以下にnginx.configというファイル名
files:
"/opt/elasticbeanstalk/support/conf/webapp_healthd.conf":
owner: root
group: root
mode: "000644"
content: |
upstream my_app {
server unix:///var/run/puma/my_app.sock;
}
log_format healthd '$msec"$uri"'
'$status"$request_time"$upstream_response_time"'
'$http_x_forwarded_for';
server {
listen 80;
server_name _ localhost; # need to listen to localhost for worker tier
# AppSec
# Hide server information
server_tokens off;
# Add secure header
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
add_header Content-Security-Policy "default-src 'none'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self';";
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
}
access_log /var/log/nginx/access.log main;
access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
location / {
proxy_pass http://my_app; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
:
}
container_commands:
99_restart_nginx:
command: "systemctl restart nginx || systemctl start nginx"Procfile
調査内容
まずは、バンドルログのフルログを取得してログの詳細を確認。
ログを確認したところ、以下のような内容でした。
eb-engine.logは特に問題なし。Nginxもエラーログは特に出ていない。
puma/puma.logも以下の記録のみで特に問題なし。
messagesも特に問題なし。
次に、Systems ManagerのセッションマネージャーでBeanstalk配下のEC2インスタンスにログインして、OS内の調査をしました。プロセス状況を確認したところ、NginxもPumaも正常に動作していました。
nginx
Puma
nginxの設定ファイル自体を見返しても特に問題は見当たらないため、nginxで設定ファイルの再読み込みをしたところ、正常にサービスは動作するようになりました。
そのため、.ebextensions/以下のnginxの設定ファイルの設定を変更しました。.ebextensions以下にnginx.configというファイルを作成し、/opt/elasticbeanstalk/support/conf/webapp_healthd.confに対してnginxの設定をしていました。それを.ebextensions/以下にnginx/conf.d/00_elastic_beanstalk_proxy.confに直接nginxの設定ファイルをそのまま記載する形で対応しました。
また、.ebextensions/以下にnginx/conf.d/elasticbeanstalk/01_elastic_beanstalk_server.confに直接nginxの設定ファイルをそのまま記載する形で対応しました。
上記のようなファイル構成に至った理由は、/var/proxy/staging/nginx/nginx.confを確認したところ、以下のようなファイル構成になっていました。すなわち、conf.d/以下の設定ファイルはhttpディレクティブ直下、conf.d/elasticbeanstalk/以下の設定ファイルはserverディレクティブ以下の設定と認識されることを確認したことによるものです。
ただし、Amazon Linux 2からは.ebextensions/以下ではなく、.platform/以下に移す必要がありました。
eb-engine.logに以下のログが出力されていました。
そのため、以下の設定を削除しました。
すると以下のエラー
https://hayashier.com/article/beanstalk-migrate-alami-alami2/ .exextentions以下ではなく.platform以下に設定ファイルをおいたほうがよい。
Last updated