Я запускаю 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
хорошо пойти!