У меня есть один 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 (локальный IP: 1.1.1.1) | WAN --¦Firewall (NAT до 1.1.1.1) ¦-- LAN | - B.domain.com (локальный 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 ... это даст вам внутреннюю ошибку 50x симптомы, которые вы описываете.