Назад | Перейти на главную страницу

Прокси-сервер Apache / перенаправление https на https с одним ip

У меня есть один WAN-IP с веб-сервером apache, на котором размещен A.domain.com, и я переверну прокси-сервер на B.domain.com на другой сервер в той же локальной сети.

Без SSL я решил это так в vhosts:

<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 и перезапустил apache. Результат - внутренняя ошибка сервера, если я позвоню на сайт. Без него у меня такая же вина.

Если я позвоню apache2ctl -S все выглядит хорошо.

Я попробовал информацию из ezra-s "SSLProxyEngine on", но все равно получаю сообщение об ошибке:

Прокси-сервер не может обработать запрос GET /

Причина: ошибка во время установления связи SSL с удаленным сервером

После некоторых поисков я нашел рабочее решение.

моя конфигурация /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/

Но надежно ли теперь соединение извне?

Попробуйте более простой метод и измените ProxyPass https к http.

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

Это обычное дело для веб-интерфейса (он же обратный прокси), чтобы общаться с серверной частью с помощью простого http, если вы достаточно защищаете сеть 1.1.1.0.

Скорее всего, вы вообще не реализовали https-сервер на 1.1.1.2 ... это даст вам 50-кратные симптомы внутренней ошибки, которые вы описываете.