Tengo una WAN-IP con un servidor web Apache que aloja A.domain.com y invertiré el proxy de B.domain.com en otro servidor en la misma red local.
Sin SSL lo resolví de esta manera en los vhosts:
<VirtualHost *:80>
ServerName Z.domain.com
ProxyRequests Off
ProxyPass / http://1.1.1.7/
ProxyPassReverse / http://1.1.1.7/
pero con SSL habilitado no funciona de esta manera...
Para una mejor comprensión intenté dibujarlo:
-- 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)
El servidor 1.1.1.1 debería redirigir a 1.1.1.2
mi configuración /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>
Lo activé con: a2ensite B.domain.com
y reinicié Apache. El resultado es un error interno del servidor si llamo al sitio. Sin el tengo el mismo fallo.
Si llamo apache2ctl -S
se ve todo bien.
Respuesta1
Probé la información de ezra-s "SSLProxyEngine activado" pero sigo recibiendo el error:
El servidor proxy no pudo manejar la solicitud GET/
Motivo: Error durante el protocolo de enlace SSL con el servidor remoto
Después de buscar un poco, encontré una solución que funciona.
mi configuración /etc/apache2/sites-available/B.domain.com.conf ahora:
<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/
¿Pero la conexión desde el exterior sigue siendo segura ahora?
Respuesta2
Pruebe un método más sencillo y cambie ProxyPass https
a http
.
ProxyPass / http://1.1.1.2/
ProxyPassReverse / http://1.1.1.2/
Es bastante habitual que una interfaz (también conocida comoproxy inverso) para comunicarse con el backend con http simple si asegura razonablemente la red 1.1.1.0.
Lo más probable es que no haya implementado el servidor https en 1.1.1.2 en absoluto... esto le daría los síntomas de error interno 50x que describe.