web-dev-qa-db-ja.com

Apacheリバースプロキシ、プロキシでのSSL、バックエンドサーバーでのSSLなし、ページ操作

いくつかのバックエンドサーバーのプロキシとしてApache2を使用しています。プロキシはすべてのサーバーのLet´s-Encrypt-SSL-Certificatesを保持し、http-trafficはhttpsにリダイレクトされてから、http-backend-serversにプロキシされます。

すべてがスムーズに実行されていますが、次のようになります。

バックエンドサーバーの1つがMoodle-Installationを保持しています。すべてのリンクはhttp-urlを指しているので、ブラウザは安全でないコンテンツがあると言います...

バックエンドからプロキシ経由でクライアントに配信されるページコンテンツを操作するにはどうすればよいですか?すべてのリンク「 http://my.doimain.com/」を「 https:// my」に置き換える必要があります配信されたページ内の.domain.com / ".. ..

プロキシとバックエンドセラー間のトラフィックはhttpsではなくhttpです。これらのサーバーにはインターネットアクセスがないため、let´sencryptによって発行された証明書を更新することはできません...

よろしくお願いします

1
wepp

2つの可能なアプローチ:

  • バックエンドサーバーに証明書をインストールしてhttpsをサポートできるようにしてから、HTTPSバックエンドで実行するようにWebアプリケーションを再構成して、それ自体を参照するときにhttpsリンクを生成するようにします。
    デフォルトではmod_proxy_httpが証明書をチェックしないため、有効な証明書は必要なく、バックエンドサーバー上の自己署名証明書を使用できます( SSLProxyVerify

  • Webアプリケーションが生成するHTMLページを書き換え、http://www.example.comの出現箇所を mod_proxy_html および ProxyHTMLURLMapディレクティブ で書き換えることができます。基本的な例は次のとおりです。

    ProxyHTMLURLMap http://internal2.example.com https://www.example.com
    
1
HBruijn

HBruijnに感謝します、あなたは私を正しい方向に向けました。

ここ これを機能させるために必要なすべてです...
VirtualHost内で-SSL設定の後にファイルを追加します。

<VirtualHost *:443>
...
...
ProxyPass / http://backend-server/
ProxyPreserveHost On

SetOutputFilter INFLATE;proxy-html;DEFLATE
ProxyHTMLExtended Off
ProxyHTMLInterp On
ProxyHTMLDoctype XHTML Legacy
ProxyPassReverse / http://backend-server/

ProxyHTMLURLMap http://external.server.address https://external.server.address

</VirtualHost>
0
wepp