Falha no Apache se eu tentar usar o ProxyPass no localhost para expor serviços diferentes como subdomínio

Falha no Apache se eu tentar usar o ProxyPass no localhost para expor serviços diferentes como subdomínio

Tenho a seguinte estrutura de diretórios para vários sites e serviços

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

site1pasta hospeda um site em site1domain.comque desejo expor os serviços de webapp hospedados serv1e serv2as pastas para mostrá-los como

service1.site1domain.com
service2.site1domain.com

Então tentei configurar o host virtual em site1domain.confarquivo desta forma

<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>

Mas os blocos de código do host virtual relacionados aos serviços causam uma falha no servidor: saia com o código de erro 1.

Alguém poderia me ajudar a entender como configurá-los corretamente?

Responder1

Que tal apenas:

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

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

Não é necessário mod_proxy.

Responder2

O erro é causado pelo seuProxyPasseProxyPassReversedirectivas que não tenhamesquemaparte do URL. A sintaxe correta seria, por exemplo

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

No entanto, Andrew está correto nissoproxy reversonão é necessária nem a melhor tecnologia para este caso de uso.

informação relacionada