SSL ターミネータの背後にあるポート 443 で Apache を使って http を提供する

SSL ターミネータの背後にあるポート 443 で Apache を使って http を提供する

当社のネットワーク オペレーション担当者は SSL ターミネーションを設定し、リクエストをリバース プロキシで当社に送信しています。彼らの要件は、ポート 443 で入力が確認された場合、ポート 443 でコンテンツを提供しなければならないというものであるため、ポート 443 では暗号化されていないコンテンツを提供しています。これは回避しなければならない不変条件です。

ほとんどの場合、これは問題ではありません。私たちListen 443は SSL を設定していませんが、リダイレクト以外はすべて動作します。

例として、次のように定義します。

Alias /foo /path/to/foo
<Directory /path/to/foo>
    ...
</Directory>

Apache は、リクエストを にリダイレクトできるほど賢いです/foo。ポート 80 で http を使用している場合は、問題なく動作します。ただし、クライアントがポート 443 で https を使用している場合は、次のような の/foo/リダイレクトが発生します。Location

Location: http://my.example.com:443/foo/

問題は、安全なプロトコルから安全でないプロトコルにリダイレクトしたくないということですが、ポート 443 では安全でないコンテンツを提供していないので、これは重要ではありません。

このリクエストが元々は安全なリクエストであったことを Apache に伝えるもっと良い方法があると思いますが、Apache の設定についてはよく知りません。Directory特に一部のコンテンツは安全な形式と安全でない形式の両方で利用できるため、エントリごとに手動でリダイレクトを作成する必要がないことを願っています。

役に立つドキュメントをご存知の方はいらっしゃいますか (残念ながら、役に立つ適切な Google 呪文が思いつきません)? これを処理する最善の方法についても教えていただけるとありがたいです。 :)

答え1

このシナリオについては、サーバーの名前:

場合によっては、サーバーは、リバース プロキシ、ロード バランサー、SSL オフロード アプライアンスなどの SSL を処理するデバイスの背後で実行されます。この場合、ServerName ディレクティブで https:// スキームとクライアントが接続するポート番号を指定して、サーバーが正しい自己参照 URL を生成するようにします。

これを実行し、同時にポート 80 を動作させ続ける場合は、少なくとも 1 つのポートに VirtualHost を使用する必要があるため、別の ServerName を追加できます。

関連情報