
この問題を解決しようとすると、非常にイライラします。
ロードバランサーで SSL 証明書を使用する AWS 環境があります。また、httpd.conf には、すべてのポート 80 トラフィックを 443 にリダイレクトする書き換えルールがあります。この環境は現在のサーバーで完全に機能し、期待どおりに 443 にリダイレクトされ、ELB ヘルスチェック ping は期待どおりに機能します。
問題は、サーバー ビルド ドキュメントを紛失したため、再作成する必要があることです。新しい Amazon Linux インスタンスで新しい httpd サービスを設定しようとすると、既存の ELB でインスタンスが使用可能であると認識されません。ELB ヘルス チェックが機能していません (既存のインスタンスでは機能します)。
ヘルスチェックは次のように構成されます。
HTTPS:443/proxy/login.php
(これは変更されず、既存のインスタンスで動作します)
ELB リスナーは次のように設定されます。
ポート 80 -> ポート 80
ポート443 -> ポート80(登録済みの証明書あり)
動作中のサーバーの httpd.conf 内には、次のルールもあります。
<VirtualHost *:80>
RequestHeader set X-Forwarded-Proto "http"
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} !^test. [NC]
RewriteCond %{HTTP_HOST} !^signup. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
新しいサーバーにルールを追加しましたが、うまくいきませんでした。稼働中のサーバーから新しいサーバーに httpd.conf をコピーしましたが、それでもうまくいきませんでした。新しいサーバーで他に何が足りないのでしょうか? 他に注意すべき構成ファイルはありますか?
答え1
ご意見ありがとうございます。次の条件を仮想ホスト セクションに追加して、443 へのリダイレクトを除外することでこの問題を解決しました。
RewriteCond %{REQUEST_URI} !^/proxy/login\.php$