Apache аварийно завершает работу, если я пытаюсь использовать ProxyPass на локальном хосте для предоставления различных сервисов в качестве поддомена

Apache аварийно завершает работу, если я пытаюсь использовать ProxyPass на локальном хосте для предоставления различных сервисов в качестве поддомена

У меня есть следующая структура каталогов для нескольких веб-сайтов и сервисов

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

site1папка размещает веб-сайт site1domain.comЯ хочу предоставить доступ к службам веб-приложений, размещенным в serv1папках serv2, чтобы отобразить их как

service1.site1domain.com
service2.site1domain.com

Итак, я попытался настроить виртуальный хост в site1domain.confфайле таким образом.

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

Однако блоки кода виртуального хоста, связанные со службами, вызывают сбой сервера: выход с кодом ошибки 1.

Может ли кто-нибудь помочь мне понять, как их правильно настроить?

решение1

Как насчет просто:

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

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

Mod_proxy не нужен.

решение2

Ошибка вызвана вашимProxyPassиProxyPassReverseдирективы, не имеющиесхемачасть URL. Правильный синтаксис будет, например,

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

Однако Эндрю прав в этомобратный проксине является ни обязательной, ни лучшей технологией для этого варианта использования.

Связанный контент