バックエンドの Docker アプリを使用して Apache2 で SSL を設定する

バックエンドの Docker アプリを使用して Apache2 で SSL を設定する

Azure VM で Apache2 (2.4.29) を搭載した Ubuntu サーバー (18.04) を実行しています。サイトから呼び出される同じホスト上の docker でバックエンド アプリを実行しています。これは SSL がなくても簡単に動作します。SSL 証明書を追加し、静的ページは https 経由で正常に読み込まれます (証明書は有効です)。アプリを呼び出すページを追加すると (ホスト ポート 8080 でリッスン)、エラーが発生します。

得るhttps://myhost.com:8080/api/fetchServiceネット::ERR_SSL_PROTOCOL_ERROR

コンテナ内のアプリは SSL 用に設定されていないので、SSL なしでローカル コンテナと対話するように Apache2 を構成するにはどうすればよいでしょうか?

仮想ホスト設定:

<IfModule mod_ssl.c>
 <VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName myhost.com
        DocumentRoot /var/www/myhost.com/public_html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

    LoadModule ssl_module modules/mod_ssl.so

    SSLProxyEngine on

    ProxyPreserveHost On

    ProxyPass *:8080/ http://myhost.com:8080/

    ProxyPassReverse *:8080/ http://myhost.com:8080/

    Header set Access-Control-Allow-Origin "*"

    SSLCertificateFile /etc/letsencrypt/live/myhost.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/myhost.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
 </VirtualHost>
</IfModule>

 
                                                                                                                                                                           

答え1

同じ問題を抱えている他の人のために投稿します。結局、リバース プロキシ用に 2 番目の仮想ホストを作成しました。

つまり、site1 -> SSL を使用した Apache Web ページの場合、

site2 -> コンテナ サービスの SSL を終了するためのリバース プロキシ。次に、元の SSL 仮想ホスト ファイルをコピーし、新しい仮想ホスト 8443 に合わせて調整します。

ドキュメントルートをコメントアウトします(例:# Document Root)

<Location />
    Order allow,deny
    Allow from all
    ProxyPass http://localhost:8080/ flushpackets=on
    ProxyPassReverse http://localhost:8080/ 
</Location>

また、ports.confに2番目のリスニングポート(例:8443)を追加し、サイトを有効にしました。a2ensitereverse-ssl.conf systemctl restart apache2

行ってもいい!

関連情報