Я попытался настроить следующую цепочку редиректов через обратный прокси, используя Apache2
№ ... -
# â Интернет â
# â âââââ â â ***
# â â â â
# â â клиент â â
# â ââ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ***
# â â â
# â â â
# ‒ ‒ c.example.com ‒
# â â â
# â â â
№ ... ... ***
# â â â â â
# â â âââââââââ â â ââ ... â â â
# â â â Публичный хост â â â
# â â â pub.ip 123.123.123.123 â â â
# â â â ââââââââ ââ ââ â ...
# â â â â Публичный прокси â â â â
# â â â ââ¬ââââââââââ ââ ...
# â â â â int.ip 10.0.0.2 â â â â
# â â â â ¼ â â â â ... â
# â â â â â â
# â â â â â â
№ ... ***
# â â â â
# â â a.example.com â b.example.com â
# ‒ ‒ c.example.com ‒ d.example.com ‒
# â â â â
# â â â â
# â â â â
# â â â â
№ ... *** Д
# â â â â â â
# â â â â â â
# â â ââââââ âââ¼ ââ ââ ââ ... ââ â â
# â â â Private-Host-1â â Private-Host-2â â â
# â â â ââââââââââ ââ â â ... ✓
# â â â âInner Proxyâ â â âInner Proxyâ â â â
# â â â âââ¬ââââââââ¬ââ â ... ✓
# â â â â â â â â â â â â
# â â ââ–â––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– â⤠âââââ¼ââââââââ¼âââ ⤠â â
# â â â âc. а. â â âb. д. â â â
# â â â â â â â â â â â â
# â â â â â â â â â â â â
# â â â âââ¼âââ ââââ¼ ââ â â âââ¼âââ ââââ¼ââ â â â
# â â â â â â â â â â â â â â â â
# â â â â â â â â â â â â â â â â
# â â â âsrv1â âsrv2â â â âsrv3â âsrv4â â â â
# â â â â10.1â â10.1â â â â10.1â â10.1â â â ✓
# â â â â.0.2â â.0.3â â â â.0.4â â.0.5â â â
# â â â ââââââ ââââââ â â ***
# â â â контейнеры â â контейнеры â â â
# â â â â â â â â â ... ✓ ✓ ✓
# â â 10.0.0.3 10.0.0.4 â â
# â â â â
# â ââ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ... - â
# 1 интрасеть 10.0.0.0/24
# â–––––––––––––––––––––––––––––––––––––––––– ... - ...
Мой файл конфигурации выглядит следующим образом (одинаково на общедоступных и частных хостах, меняйте IP по мере необходимости)
# c-example-com.conf на общедоступном хосте
<IfModule mod_ssl.c>
<Виртуальный хост *:443>
имя_сервера c.example.com
<Прокси *>
Отклонить заказ, разрешить
Разрешить от всех
</прокси>
Включить /etc/letsencrypt/options-ssl-apache.conf
SSLEngine включен
SSLCertificateFile /etc/letsencrypt/live/c.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/c.example.com/privkey.pem
Прокси-запросы выключены
ProxyPreserveHost включен
SSLProxyEngine включен
ProxyPass / https://10.0.0.3/ # на частном хосте, это будет 10.1.0.2 для всех остальных проходов
ПроксиПассРеверс / https://10.0.0.3/
</ виртуальный хост>
</ЕслиМодуль>
<IfModule mod_ssl.c>
<Виртуальный хост *:80>
имя_сервера c.example.com
<Прокси *>
Отклонить заказ, разрешить
Разрешить от всех
</прокси>
Прокси-запросы выключены
ProxyPreserveHost включен
ПроксиПасс / http://10.0.0.3/
ПроксиПассРеверс / http://10.0.0.3/
RewriteEngine включен
</ виртуальный хост>
</ЕслиМодуль>
<Виртуальный хост *:80>
имя_сервера c.example.com
<Прокси *>
Отклонить заказ, разрешить
Разрешить от всех
</прокси>
Прокси-запросы выключены
ProxyPreserveHost включен
ПроксиПасс / http://10.0.0.3/
ПроксиПассРеверс / http://10.0.0.3/
RewriteEngine включен
RewriteCond %{SERVER_NAME} =c.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</ виртуальный хост>
Без общедоступного хоста, то есть если частный хост 1 подключен к Интернету, а его общедоступный IP-адрес сопоставляется с доменным именем и перенаправляет на контейнер srv1 через один обратный прокси-сервер, тогда он работает нормально. Однако, когда общедоступный прокси-сервер связан поверх внутреннего прокси-сервера 1, происходит следующее:
1). http://c.example.com показывает значение по умолчанию index.html
Apache2 с общедоступного хоста
2). https://c.example.com отказывается подключаться.
Каждый уровень (общедоступный хост, частный хост и сервер) имеет свой собственный сертификат SSL, но он вторичен. На данный момент даже http не работает. Любые идеи?