У меня на сервере работают два приложения с доменами
x.abc.com
admin.x.abc.com
x.abc.com is running on port 80
admin.x.abc.com is running on port 8080
Я могу получить доступ к x.abc.com из браузера, но когда я пытаюсь использовать admin.x.abc.com, он отправляет запросы только на x.abc.com.
Как правильно настроить два разных веб-приложения с разными доменами и портами на одном компьютере. Ниже перечислены мои файлы виртуального хоста для x.abc.com и admin.x.abc.com соответственно
<VirtualHost *:80>
ServerName www.x.abc.com
ServerAlias x.abc.com
RailsEnv test
DocumentRoot /home/cp/cp/public
<Directory /home/cp/cp/public/>
</Directory>
LogLevel warn
ErrorLog /home/cp/cp/log/error.log
CustomLog /home/cp/cp/access.log combined
RewriteCond %{HTTP_HOST} ^admin.x.abc.com
RewriteRule (.*) http://localhost:8080/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:8080>
ServerName www.admin.x.abc.com
ServerAlias admin.x.abc.com
RailsEnv test
DocumentRoot /home/cp/cp_admin/public
<Directory /home/cp/cp_admin/public/>
</Directory>
LogLevel warn
ErrorLog /home/cp/cp_admin/log/error.log
CustomLog /home/cp/cp_admin/access.log combined
</VirtualHost>
Вы можете добавить несколько VirtualHost
директивы для одного порта. Apache обработает их по именам, т.е. ServerName
и ServerAlias
. Обратите внимание, что по умолчанию Apache использует первый VirtualHost
настроен, если совпадений не найдено. Следующая конфигурация должна работать.
<VirtualHost *:80>
ServerName www.admin.x.abc.com
ServerAlias admin.x.abc.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName www.x.abc.com
ServerAlias x.abc.com
...
</VirtualHost>
Ваш конфиг вроде хорош. Попробуйте следующее:
Похоже, что может происходить следующее: (1) весь трафик обрабатывается через порт 80, а затем (2) ServerAlias x.abc.com
соответствует (и используется для) admin.x.abc.com
. Обратите внимание, из Документация Apache относительно соответствия:
Виртуальные хосты на основе имен для наиболее подходящего набора
<virtualhost>
s обрабатываются в том порядке, в котором они появляются в конфигурации. Первое совпадениеServerName
илиServerAlias
используется без разницы в приоритете для подстановочных знаков (а также для ServerName и ServerAlias).
Это разрешается после добавления строки ниже в httpd.conf
NameVirtualHosts *:80