A.domain.com을 호스팅하는 Apache 웹 서버가 있는 하나의 WAN-IP가 있고 B.domain.com에 대한 프록시를 동일한 로컬 네트워크의 다른 서버로 역방향으로 수행합니다.
SSL이 없으면 가상 호스트에서 다음과 같이 해결했습니다.
<VirtualHost *:80>
ServerName Z.domain.com
ProxyRequests Off
ProxyPass / http://1.1.1.7/
ProxyPassReverse / http://1.1.1.7/
하지만 SSL을 활성화하면 이런 식으로 작동하지 않습니다 ...
더 나은 이해를 위해 그려 보았습니다.
-- A.domain.com(local IP:1.1.1.1) | WAN --¦Firewall (NAT to 1.1.1.1) ¦-- LAN | -- B.domain.com(local IP:1.1.1.2)
서버 1.1.1.1은 1.1.1.2로 리디렉션되어야 합니다.
내 구성 /etc/apache2/sites-available/B.domain.com.conf:
<VirtualHost *:443>
ServerName B.domain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/B.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/B.domain.com/privkey.pem
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / https://1.1.1.2/
ProxyPassReverse / https://1.1.1.2/
</VirtualHost>
다음을 사용하여 활성화 a2ensite B.domain.com
하고 아파치를 다시 시작했습니다. 사이트에 전화하면 결과는 내부 서버 오류입니다. 그것 없이는 나도 같은 잘못이 있습니다.
내가 전화하면 apache2ctl -S
다 좋아 보인다.
답변1
ezra-s의 "SSLProxyEngine on"에서 정보를 시도했지만 여전히 오류가 발생합니다.
프록시 서버가 요청 GET/을 처리할 수 없습니다.
이유: 원격 서버와의 SSL Handshake 중 오류가 발생했습니다.
몇 가지 검색 끝에 작동하는 솔루션을 찾았습니다.
내 구성 /etc/apache2/sites-available/B.domain.com.conf 지금 :
<VirtualHost *:443>
ServerName B.domain.com
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLCertificateFile /etc/letsencrypt/live/B.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/B.domain.com/privkey.pem
ProxyPass / https://1.1.1.2/
ProxyPassReverse / https://1.1.1.2/
그런데 외부로부터의 연결은 지금도 안전할까요?
답변2
더 간단한 방법을 시도하고 ProxyPass https
를 http
.
ProxyPass / http://1.1.1.2/
ProxyPassReverse / http://1.1.1.2/
이는 프런트엔드(일명역방향 프록시) 1.1.1.0 네트워크를 합리적으로 보호하는 경우 일반 http로 백엔드와 통신합니다.
1.1.1.2에서 https 서버를 전혀 구현하지 않았을 가능성이 있습니다. 이로 인해 설명하는 내부 오류 50x 증상이 나타날 수 있습니다.