
У меня есть следующая структура каталогов для нескольких веб-сайтов и сервисов
/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"
Однако Эндрю прав в этомобратный проксине является ни обязательной, ни лучшей технологией для этого варианта использования.