8

2つの専用サーバーの負荷分散を想定しているハードウェアロードバランサーを指すWebサイト(例:http: //www.acb.com)があります。各サーバーはフロントエンドとしてapacheを実行しており、mod_proxyを使用してリクエストをtomcatに転送します。

当社のウェブサイトの一部のページには、https://www.abc.com/loginやhttps://www.abc.com/checkoutなどのSSLが必要です

SSLはハードウェアロードバランサーで終了します。

mod_pagespeedを構成すると、cssファイルが圧縮、最小化、マージされ、相対URL/css/merged.pagespeedxxx.cssではなく絶対URLhttp://www.abc.com/css/merged.pagespeedxxx.cssで書き直されました。

ssl以外のページでは正常に機能しますが、 https: //www.abc.com/loginなどのsslページに移動すると、絶対URLがsslを使用していないため、すべてのcssファイルとjsファイルがchromeなどのブラウザーによってブロックされます。

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

8

このドキュメントこの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.commod_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) に送信する必要があります。

于 2013-01-25T09:06:59.083 に答える
1

これは、書き換えられた URL を自分で構成したようです-http://www.abc.com/css/merged.pagespeedxxx.cssそのため: プロトコルに関連する URL を使用してみてください。http://www.abc.com/css/merged.pagespeedxxx.css

十分に標準化されているが比較的知られていない URL の機能の 1 つ

于 2013-01-23T21:30:49.127 に答える