Настройка SSL в Apache2 с помощью бэкэнд-приложения Docker

Настройка SSL в Apache2 с помощью бэкэнд-приложения Docker

Я запускаю Ubuntu server (18.04) на Azure VM с Apache2 (2.4.29). У меня есть бэкенд-приложение, работающее в docker на том же хосте, который вызывается моим сайтом. Это работает достаточно просто без SSL. Я добавил свой SSL-сертификат, и статическая страница нормально загружается по https (так что сертификат действителен). Когда я добавляю страницу, которая вызывает мое приложение (прослушивает порт хоста 8080), я получаю ошибку:

ПОЛУЧАТЬhttps://myhost.com:8080/api/fetchServicenet::ERR_SSL_PROTOCOL_ERROR

Поскольку мое приложение в контейнере не настроено на SSL, как мне настроить Apache2 для взаимодействия с локальным контейнером без SSL?

Конфигурация виртуального хоста:

<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

Публикую для тех, у кого такая же проблема. В итоге я создал второй виртуальный хост для обратного прокси.

поэтому site1 -> для веб-страницы Apache с SSL,

site2 -> обратный прокси для завершения ssl для контейнерного сервиса. Затем скопировал оригинальный файл виртуального хоста ssl и настроил для нового виртуального хоста 8443:

закомментируйте Document Root (например, # Document Root)

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

Также добавлен второй порт прослушивания в ports.conf (например, 8443) и включен site. a2ensite reverse-ssl.conf systemctl restart apache2

хорошо пойти!

Связанный контент