このドキュメントとこのhttps
ドキュメントで文字列を確認してください。
質問で現在のModPagespeedMapOriginDomain
&&ModPagespeedDomain
設定を表示する必要があります。
これらの行から私が理解していることから:
origin_specified_in_html は https を指定できますが、origin_to_fetch_from は http のみを指定できます。
ModPagespeedMapOriginDomain http://localhost https://www.example.com
このディレクティブにより、サーバーはリソースをフェッチするために SSL 証明書を必要とせずにwww.example.comの https リクエストを受け入れることができます。実際、mod_pagespeed が https リクエストを処理できる唯一の方法は、現在 https を使用してリソースをフェッチすることができないためです。たとえば、上記のマッピングが与えられ、Apache が https サポート用に構成されていると仮定すると、mod_pagespeed は、 を使用してアクセスされるリソースを取得して最適化しhttps://www.example.com
、 からリソースを取得しhttp://localhost
ます。これは、同じ Apache プロセスまたは別のサーバー プロセスである可能性があります。
そして、これらのもの:
mod_pagespeed は、https を介してコンテンツを提供するサイトに対して限定的なサポートを提供します。https リクエストを処理するように mod_pagespeed を構成できるメカニズムは 2 つあります。
- ModPagespeedMapOriginDomain を使用して、https ドメインを http ドメインにマップします。
- ModPagespeedLoadFromFile を使用して、ローカルで利用可能なディレクトリを https ドメインにマップします。
解決策はそのようなものです(ModPagespeedLoadFromFile
または
ModPagespeedMapOriginDomain http://localhost https://www.example.com
しかし、実際の問題は、ハードウェア ロード バランサーが独自に処理するため、Apache が HTTPS 要求を直接受信しないことです。そのため、mod-pagespeed 出力フィルターは、それが SSL ドメインに対して要求されたことさえ知りません。また、HTML コンテンツを変更する場合は、ドメインの書き換えを適用するか、https の場合を処理できません。
したがって... 1つの解決策(テストされていない)は、Apacheサーバーで別の仮想ホストを使用することです。必要に応じてHTTPで、https処理専用です。すべての https 関連の URL ( /login
、/checkout
、...) は、ハードウェア ロード バランサーによってこの特定のドメイン名にリダイレクトされます。としましょうhttp://secure.acb.com
。この名前は、ロード バランサーとフロント Apache の間でのみ使用されます (そして、Apache はこの VH へのアクセスをロード バランサーのみに制限する必要があります)。
次に、これらの仮想ホストでhttp://secure.acb.com
mod_pagespeed を構成して、外部からドメインを に書き換えますhttps://www.example.com
。何かのようなもの:
ModPagespeedMapOriginDomain http://secure.example.com https://www.example.com
最後に、エンド ユーザーの要求は ですhttps://www.example.com/login
。ロード バランサーは HTTPS を管理し、Apache と通信します。http://secure.example.com
ページの結果には、https://www.example.com/*
アセットへの参照のみが含まれます。これらのアセットが https ドメイン リクエストでリクエストされた場合でも、これらのアセットの提供に問題があります。そのため、ハードウェア ロード バランサーは、https ドメインでこれらすべてのアセット URL を許可し、それらをhttp://secure.abc.com
仮想ホスト (またはその他の静的 VH) に送信する必要があります。