다음 구성을 기반으로 Debian 8.2(Jessie) 및 Apache 2.4.10-10+deb8u에 두 개의 별도 가상 호스트(http용 하나와 https용 하나)가 있는 역방향 프록시 설정이 있습니다.
<IfDefine IgnoreBlockComment>
<VirtualHost *:80>
CustomLog /tmp/just_size.log just_size
DocumentRoot /var/www/
ServerName XXXXXXXXXX
TraceEnable off
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
ExpiresActive On
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType audio/mpeg "access plus 1 year"
ExpiresByType video/mpeg "access plus 1 year"
ExpiresByType text/html "modification plus 5 minutes"
CustomLog /dev/null combined env=!no-registrar
ProxyPreserveHost On
CustomLog /tmp/non_https.log non_https
ProxyPass /telemetria-ws/ http://10.1.0.116:8080/telemetria-ws/
ProxyPassReverse /telemetria-ws/ http://10.1.0.116:8080/telemetria-ws/
ProxyTimeout 1200
ProxyPass /ecobox-ws/ http://10.1.0.116:8080/ecobox-ws/
ProxyPassReverse /ecobox-ws/ http://10.1.0.116:8080/ecobox-ws/
ProxyPass / http://10.1.0.116:8080/WebService/ connectiontimeout=300 timeout=300 KeepAlive=On retry=1 acquire=3000
ProxyPassReverse / http://10.1.0.116:8080/WebService/
ProxySet "http://10.1.0.116:8080/WebService/" connectiontimeout=300 timeout=300
FileETag MTime Size
Header append X-Frame-Options "DENY"
</VirtualHost>
</IfDefine>
<VirtualHost *:443>
CustomLog /tmp/just_size.log just_size
ServerName XXXXXXX
DocumentRoot /var/www
DirectoryIndex index.php index.html
TraceEnable off
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
#RequestHeader set Front-End-Https "On"
CustomLog /dev/null combined env=!no-registrar
ProxyPreserveHost On
RequestHeader set x-forwarded-server "https://XXXXXXX/"
RequestHeader set x-forwarded-host "https://XXXXXXX/"
SSLEngine On
SSLCertificateKeyFile /etc/apache2/ssl/cert.key
SSLCertificateFile /etc/apache2/ssl/cert.crt
SSLCertificateChainFile /etc/apache2/ssl/gd_bundle-g2-g1.crt
ProxyPass /telemetria-ws/ http://10.1.0.116:8080/telemetria-ws/
ProxyPassReverse /telemetria-ws/ http://10.1.0.116:8080/telemetria-ws/
ProxyTimeout 1200
ProxyPass /TrackViewRealTime/ http://10.1.0.235:8080/TrackViewRealTime/
ProxyPassReverse /TrackViewRealTime/ http://10.1.0.235:8080/TrackViewRealTime/
ProxyPass /TrackViewLogin/ http://10.1.0.235:8080/TrackViewLogin/
ProxyPassReverse /TrackViewLogin/ http://10.1.0.235:8080/TrackViewLogin/
ProxyPass /TrackViewData/ http://10.1.0.235:8080/TrackViewData/
ProxyPassReverse /TrackViewData/ http://10.1.0.235:8080/TrackViewData/
ProxyPass /ecobox-ws/ http://10.1.0.116:8080/ecobox-ws/
ProxyPassReverse /ecobox-ws/ http://10.1.0.116:8080/ecobox-ws/
ProxyPass /puerto-coronel-ws/ http://10.1.0.116:8080/puerto-coronel-ws/
ProxyPassReverse /puerto-coronel-ws/ http://10.1.0.116:8080/puerto-coronel-ws/
ProxyPass / http://10.1.0.116:8080/WebService/ connectiontimeout=300 timeout=300 KeepAlive=On retry=1 acquire=3000
ProxyPassReverse / http://10.1.0.116:8080/WebService/
ProxySet "http://10.1.0.116:8080/WebService/" connectiontimeout=300 timeout=300
FileETag MTime Size
Header append X-Frame-Options "DENY"
</VirtualHost>
Proxy* 구성 지시문에서 볼 수 있듯이 내부 IP 10.1.0.116에서 노출된 여러 웹 서비스(및 해당 WSDL)가 있습니다. 문제는 들어오는 일반 http 트래픽을 이러한 웹 서비스로 리디렉션할 수 없으며 웹 서비스만 작동한다는 것입니다. https를 사용하므로 포트 80의 VirtualHost 구성에 문제가 있는 것 같습니다.
더 이상한 점은 요청 URL이 다음과 같은 경우입니다.
http://HOST/telemetria-ws/frioChileTempService/
응답*을 받았지만 다음 응답 헤더가 포함된 빈 응답이 있습니다.
*SOAP-UI SSL 정보에 유효한 인증서가 나타나므로 응답은 HTTPS로 나타납니다.
하지만 URL에 포트 80을 추가하면(위와 동일해야 함):
http://HOST:80/telemetria-ws/frioChileTempService/
서버는 이를 SSL로 해석하지만 일반 텍스트 연결을 사용합니다.
Wed Feb 22 10:52:21 ART 2017:ERROR:javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
일치하지 않는 구성은 어디서 구할 수 있나요? 일반 http를 https로 리디렉션할 것으로 예상되지만 어떤 일이 발생할 수 있는지 완전히 이해하지 못합니다.