У меня на сервере работают два приложения с доменами
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 относительно сопоставления:
Виртуальные хосты на основе имен для наиболее подходящего набора из
обрабатываются в том порядке, в котором они появляются в конфигурации . Используется первое совпадение
ServerName
илиServerAlias
без разницы в приоритете для подстановочных знаков (ни для ServerName и ServerAlias).