백엔드 Docker 앱을 사용하여 Apache2에서 SSL 설정

백엔드 Docker 앱을 사용하여 Apache2에서 SSL 설정

저는 Apache2(2.4.29)를 사용하여 Azure VM에서 Ubuntu 서버(18.04)를 실행하고 있습니다. 내 사이트에서 호출되는 동일한 호스트의 Docker에서 백엔드 앱이 실행되고 있습니다. SSL 없이도 충분히 쉽게 작동합니다. SSL 인증서를 추가했는데 정적 페이지가 https를 통해 제대로 로드되었습니다(따라서 인증서가 유효함). 내 앱을 호출하는 페이지를 추가하면(호스트 포트 8080에서 수신) 오류가 발생합니다.

얻다https://myhost.com:8080/api/fetchServicenet::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

같은 문제가 있는 다른 사람을 위해 게시합니다. 결국 역방향 프록시를 위한 두 번째 가상 호스트를 만들었습니다.

따라서 site1 -> SSL이 포함된 Apache 웹페이지의 경우,

site2 -> 역방향 프록시를 사용하여 컨테이너 서비스용 SSL을 종료합니다. 그런 다음 원본 SSL 가상 호스트 파일을 복사하고 새 가상 호스트 8443에 맞게 조정했습니다.

문서 루트 주석 처리(예: # 문서 루트)

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

또한 ports.conf(예: 8443)에 두 번째 수신 포트를 추가하고 사이트를 활성화했습니다. a2ensite reverse-ssl.conf systemctl 재시작 apache2

좋아요!

관련 정보