Estou executando o servidor Ubuntu (18.04) em uma VM do Azure, com Apache2 (2.4.29). Eu tenho um aplicativo de back-end em execução no docker no mesmo host chamado pelo meu site. Isso funciona com bastante facilidade sem SSL. Adicionei meu certificado SSL e uma página estática carrega bem em https (portanto, o certificado é válido). Quando adiciono a página que chama meu aplicativo (escutando na porta host 8080), recebo um erro:
PEGARhttps://myhost.com:8080/api/fetchServicerede::ERR_SSL_PROTOCOL_ERROR
Como meu aplicativo no contêiner não está configurado para SSL, como configuro o Apache2 para interagir com o contêiner local sem SSL?
configuração do host virtual:
<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>
Responder1
Postando para mais alguém com o mesmo problema. Acabei criando um segundo host virtual para o proxy reverso.
então site1 -> para a página da web apache com SSL,
site2 -> proxy reverso para encerrar o SSL para serviço de contêiner. Em seguida, copiei o arquivo de host virtual SSL original e ajustei para o novo host virtual 8443:
comente a raiz do documento (por exemplo, # raiz do documento)
<Location />
Order allow,deny
Allow from all
ProxyPass http://localhost:8080/ flushpackets=on
ProxyPassReverse http://localhost:8080/
</Location>
Também foi adicionada uma segunda porta de escuta em ports.conf (por exemplo, 8443) e site habilitado. a2ensite reverso-ssl.conf systemctl reiniciar apache2
bom para ir!