AWSのEBSを使用しているときにHTTPS化を行った後、アプリケーションが「ERR_CONNECTION_REFUSED」エラーを返すことがあります。セキュリティグループの設定、ロードバランサーの追加、そしてPHPアプリケーションのリダイレクト設定が正しく行われているにもかかわらず、この問題が発生する理由について、具体的な確認方法を解説します。
1. セキュリティグループ設定の確認
まず、セキュリティグループの設定が正しく行われているかを確認します。HTTPS化のためには、インバウンドルールにポート443(HTTPS)が開放されていることを確認する必要があります。
セキュリティグループの設定を確認する際には、以下の点をチェックしてください。
- ポート443がインバウンドルールに追加されているか
- 許可されたIPアドレス範囲(0.0.0.0/0など)からアクセスが許可されているか
2. ロードバランサー設定の確認
次に、ロードバランサーの設定を確認します。HTTPS化を行った場合、ロードバランサーも正しく設定されている必要があります。特に、以下の点に注意しましょう。
- HTTPSリスナーが追加されているか
- ターゲットグループが正しく設定されているか(HTTPとHTTPSのターゲットが適切にルーティングされるように)
- SSL証明書が正しく設定されているか
これらの設定が正しく行われていないと、HTTPSでの接続に失敗する可能性があります。
3. PHPアプリケーションのHTTPSリダイレクト設定確認
アプリケーション側でHTTPSリダイレクトを設定している場合、リダイレクトの設定が正しいかを確認します。誤ったリダイレクト設定が原因で接続が拒否されることがあります。
PHPでのリダイレクト設定例。
if ($_SERVER['HTTPS'] != 'on') { header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); exit(); }
上記のコードが正しく動作していない場合や、条件が誤っていると、リダイレクトループや接続拒否エラーが発生することがあります。
4. EC2インスタンスの状態確認
次に、EC2インスタンス自体が正常に動作しているかを確認します。インスタンスのステータスが「running」であり、インスタンスが正しく稼働しているかを確認してください。
また、インスタンスのファイアウォール設定(内部セキュリティグループ)も確認し、ポート443へのアクセスが許可されていることを確認します。
5. SSL/TLS証明書の設定確認
HTTPS化にはSSL/TLS証明書が必要ですが、証明書の設定に問題があると接続エラーが発生します。証明書が正しく設定されているか、期限が切れていないかを再確認してください。
証明書の確認方法。
- 証明書が有効期限内であるか
- 証明書のチェーンが正しく設定されているか
- 証明書が正しいドメインに対応しているか
6. まとめ
「ERR_CONNECTION_REFUSED」エラーの原因は、セキュリティグループ、ロードバランサー、PHPアプリケーションのリダイレクト設定、EC2インスタンス、SSL証明書など、複数の設定に関連していることがあります。これらの設定を確認することで、エラーを解決することができます。
もしこれらの確認を行っても問題が解決しない場合、AWSのサポートに問い合わせるか、エラーログを確認して具体的な原因を突き止めることをお勧めします。
コメント