Estoy tratando de ocultar el puerto de un contenedor implementado y preservar la URL original usando ProxyPass. Probablemente he configurado algo mal porque en lugar de simplemente mantener la dirección original, obtengo una redirección a la dirección del contenedor (example.com:8014 en lugar de mantener el subdominio.example.com). La respuesta HTTP es: 301 Movido permanentemente (del trabajador del servicio).
Este es el host virtual que contiene el proxy:
<VirtualHost *:80> ServerName subdomain.example.com RewriteEngine on RewriteCond %{SERVER_NAME} =subdomain.example.com RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> <VirtualHost *:443> ServerAdmin admin@example.com ServerName subdomain.example.com ServerAlias subdomain.example.com LoadModule proxy_http_module modules/mod_proxy_http.so SSLProxyEngine On Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/subdomain.example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/subdomain.example.com/privkey.pem ProxyPreserveHost On ProxyPass / https://example.com:8014/ ProxyPassReverse / https://example.com:8014/ </VirtualHost>Y este es el host virtual dentro del contenedor:
<VirtualHost *:80> ServerName example.com RewriteEngine on RewriteCond %{SERVER_NAME} =example.com:8014 RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> <VirtualHost *:443> ServerAdmin admin@example.com ServerName example.com <Directory /var/www/html> AllowOverride All </Directory> SSLEngine On SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off SSLSessionTickets off SSLOptions +StrictRequire SSLCertificateFile /etc/apache2/fullchain.pem SSLCertificateKeyFile /etc/apache2/privkey.pem </VirtualHost>Los puertos de contenedores se asignan de la siguiente manera: 80->8012, 443->8014.
Mi objetivo es llegar a example.com:8014 usando subdomain.example.com sin cambiar la dirección. Además, ni siquiera estoy seguro de por qué cuando uso example.com:8012 no se me redirige a https en el puerto 8014. El problema debe estar en el host virtual del contenedor porque es el que genera el código de estado 301.
La configuración funciona bien. Aconsejaría borrar el caché de Google Chrome cuando suceda algo como esto.