0
0

[解決済み]503 Service Temporarily Unavailable

Last updated at Posted at 2024-07-31

解決しました

目的

webサイトをHTTPS化したい。

問題

  • nginxのエラーログでFastCGI sent in stderr: "Primary script unknown"というエラーが発生。
  • httpsで接続すると503 Service Temporarily Unavailableというエラーだけ表示される。
  • EC2のターゲットグループ内でヘルスステータスがUnhealthy、詳細がRequest timed outとなっている。
    SCR-20240731-pjta.png

状況

正直なところ、初学者なりにいろいろ構って今どんな状況なのか理解できていない。

今日構ったのは

  • nginx.conf
  • ロードバランサー作成
  • ターゲットグループ作成
  • セキュリティグループのインバウンドルール設定

主にいじっていたnginx.confでやっていたこととしては、GPTやPerplexityに聞きながら以下を追加。

nginx.conf
    if ($http_x_forwarded_proto = 'http') {
    return 301 https://$host$request_uri;
}

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php-fpm/www.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

server項目内のlistenを80から10080に変更
server_nameを_;からdogtype.net www.dogtype.net;に変更

次回

自分でもさまざまな記事を参考にしてAWSの設定をしたため、なぜポート番号10080なのかとかわかっていない。
なので次回はポート番号80で設定してみようと思う。

ちなみにセキュリティグループで10080の許可、ロードバランサーのリスナーでHTTP:10080を設定しHTTPSにリダイレクトするように設定、ターゲットグループのポートは10080と統一しているつもり。

プログラミング歴5ヶ月ほど、まだまだ初学者にはAWS難しすぎて苦しい…。

解決(2024/08/02)

直接的な原因はわからなかったものの、ポート変更とロードバランサーのリスナーとルールを編集することで解決しました。

一度ロードバランサー、セキュリティグループ、ターゲットグループ、VPCを作り直しポート番号を10080から80にしました。
その時点でwebサイトへhttp接続はでき、https接続をすると 「504 Gateway Time-out」 と出るようになりました。

次にロードバランサーのリスナーとルールですが、
HTTP:80リスナーではHTTPS(443)へリダイレクトするルールを。
HTTPS:443リスナーではポート番号80のターゲットグループへ転送するルールを設定します。
SCR-20240802-ohqn.png
これにて無事HTTPS接続ができるようになりました!

結果として問題のnginxのエラーは出なくなり、503エラーも表示されなくなり、異常のあるターゲットグループは使わないことになりました。

ただ今や当たり前のようにGPTやPerplexityに頼るが、これでは実力が身につかないと危機感を抱いている…。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0