Apache 프록시/하나의 IP를 사용하여 https를 https로 리디렉션

Apache 프록시/하나의 IP를 사용하여 https를 https로 리디렉션

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 httpshttp.

    ProxyPass        / http://1.1.1.2/
    ProxyPassReverse / http://1.1.1.2/

이는 프런트엔드(일명역방향 프록시) 1.1.1.0 네트워크를 합리적으로 보호하는 경우 일반 http로 백엔드와 통신합니다.

1.1.1.2에서 https 서버를 전혀 구현하지 않았을 가능성이 있습니다. 이로 인해 설명하는 내부 오류 50x 증상이 나타날 수 있습니다.

관련 정보