Am încercat să configurez următorul lanț de redirecționări prin proxy invers folosind Apache2
# âââââââââââââââ†âââââââââââââââ†âââââââââââââ
# â Internet â
# â ââââââââââââââ†âââââââââ â
# â â â â
# â â client â â
# â âââââââââââââ¬â†âââââââââ â
# â â â
# â â â
# â â c.example.com â
# â â â
# â â â
# ââââââââââ¼âââââââ¼âââââââ ââââââââââââââââ¼â âââââââââââââââ†ââââ¼âââââââââ
# â â â â â
# â â âââââââââââââ†ââ¼âââââââââââââ†â â â
# â â â Gazdă publică â â â
# â â â pub.ip 123.123.123.123 â â â
# â â â âââââââââââ↽
# â â â â Proxy public â â â â
# â â â ââ¬âââââââââ↽
# â â â â 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. âa. â â âb. âd. â â â
# â â â â â â â â â â â â
# â â â â â â â â â â â â
# â â â âââ¼âââ ââââ¼ââ â â âââ¼âââ ââââ¼ââ â â â
# â â â â â â â â â â â â â â â â
# â â â â â â â â â â â â â â â â
# â â â âsrv1â âsrv2â â â âsrv3â âsrv4â â
# â â â â10.1â â10.1â â â â10.1â â10.1â â â
# â â â â.0.2â â.0.3â â â â.0.4â â.0.5â â â â
# â â â ââââââ ââââââ â â ââââââ ââââââ â â â
# â â â containere â â containere â â â
# â â âââââââââââââ†ââ ââââââââââââ†âââ â â
# â â 10.0.0.3 10.0.0.4 â â
# â â â â
# â ââââââââââââââ†âââââââââââââââ†âââââââââââââââ†â
# â 1ntranet 10.0.0.0/24 â
# âââââââââââââââ†âââââââââââââââ†âââââââââââââââ†ââââââââââââââ
Fișierul meu de configurare este după cum urmează (la fel pentru gazdele publice și private, schimbați IP-ul după cum se potrivește)
# c-example-com.conf pe gazda publică
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName c.example.com
<Proxy *>
Comanda refuzată, permiteți
Permite de la toți
</Proxy>
Includeți /etc/letsencrypt/options-ssl-apache.conf
SSLEngine activat
SSLCertificateFile /etc/letsencrypt/live/c.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/c.example.com/privkey.pem
ProxyRequests dezactivat
ProxyPreserveHost activat
SSLProxyEngine activat
ProxyPass / https://10.0.0.3/ # pe gazda privată, aceasta ar fi 10.1.0.2 pentru toate celelalte permise
ProxyPassReverse / https://10.0.0.3/
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName c.example.com
<Proxy *>
Comanda refuzată, permiteți
Permite de la toți
</Proxy>
ProxyRequests dezactivat
ProxyPreserveHost activat
ProxyPass / http://10.0.0.3/
ProxyPassReverse / http://10.0.0.3/
RewriteEngine activat
</VirtualHost>
</IfModule>
<VirtualHost *:80>
ServerName c.example.com
<Proxy *>
Comanda refuzată, permiteți
Permite de la toți
</Proxy>
ProxyRequests dezactivat
ProxyPreserveHost activat
ProxyPass / http://10.0.0.3/
ProxyPassReverse / http://10.0.0.3/
RewriteEngine activat
RewriteCond %{SERVER_NAME} =c.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Fără gazdă publică, adică dacă gazda privată 1 este expusă la internet și IP-ul său public este mapat la numele domeniului și redirecționează către containerul srv1 printr-un singur proxy invers, atunci funcționează bine. Cu toate acestea, atunci când proxy-ul public este înlănțuit deasupra proxy-ului interior 1, atunci se întâmplă următoarele:
1). http://c.example.com afișează implicit index.html
de Apache2 de la Public Host
2). https://c.example.com refuză să se conecteze.
Fiecare strat (gazdă publică, gazdă privată și server) are propriul său certificat SSL, dar acesta este secundar. În acest moment, nici măcar http nu funcționează. Vreo idee?