Apache falla si intento usar ProxyPass en localhost para exponer diferentes servicios como subdominio

Apache falla si intento usar ProxyPass en localhost para exponer diferentes servicios como subdominio

Tengo la siguiente estructura de directorios para múltiples sitios web y servicios.

/var/www/html/site1
/var/www/html/site2
/var/www/html/site3
/var/www/html/serv1
/var/www/html/serv2

site1La carpeta aloja un sitio web. site1domain.comQuiero exponer los servicios de aplicaciones web alojados en serv1las serv2carpetas para mostrarlos como

service1.site1domain.com
service2.site1domain.com

Así que intenté configurar el host virtual en site1domain.confel archivo de esta manera.

<VirtualHost *:80>
    ServerName site1domain.com
    ServerAlias www.site1domain.com
    DocumentRoot /var/www/html/site1
    <Directory /var/www/html/site1>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName service1.site1domain.com
    ProxyPreserveHost On
    ProxyRequest Off
    ProxyPass        "/" "localhost/serv1"
    ProxyPassReverse "/" "localhost/serv1"
</VirtualHost>

<VirtualHost *:80>
     ServerName service2.site1domain.com
     ProxyPreserveHost On
     ProxyRequest Off
     ProxyPass        "/" "localhost/serv2"
     ProxyPassReverse "/" "localhost/serv2"
</VirtualHost>

Pero los bloques de código del host virtual relacionados con los servicios provocan una caída del servidor: salga con el código de error 1.

¿Alguien podría ayudarme a entender cómo configurarlos correctamente?

Respuesta1

¿Qué tal simplemente:

<VirtualHost *:80>
    ServerName service1.site1domain.com
    DocumentRoot /var/www/html/serv1
</VirtualHost>

<VirtualHost *:80>
    ServerName service2.site1domain.com
    DocumentRoot /var/www/html/serv2
</VirtualHost>

No se necesita mod_proxy.

Respuesta2

El error es causado por suProxyPassyProxyPassReversedirectivas que no tienen laesquemaparte de la URL. La sintaxis correcta sería, por ejemplo

ProxyPass "/" "http://localhost/serv1" 
ProxyPassReverse "/" "http://localhost/serv1"

Sin embargo, Andrew tiene razón en eso.proxy inversoNo se requiere ni la mejor tecnología para este caso de uso.

información relacionada