저는 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
좋아요!