как мы можем запускать несколько приложений с разными доменами и номерами портов в apache

У меня на сервере работают два приложения с доменами

 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>
3
задан 27 April 2016 в 16:30
4 ответа

Вы можете добавить несколько директив 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
ответ дан 3 December 2019 в 07:24

Проблема решена после добавления следующей строки в httpd.conf

NameVirtualHosts *:80
-1
ответ дан 3 December 2019 в 07:24

Кажется, у вас все в порядке. Попробуйте следующее:

  1. Вы используете домены или IP? Если он не найдет виртуальный хост, о котором вы говорите, , он будет обслуживать первый виртуальный хост . В данном случае www.x.abc.com. Это не зависит от порта.
  2. Попробуйте добавить директиву Listen 8080 . У вас должны быть и Listen 80, и Listen 8080.
1
ответ дан 3 December 2019 в 07:24

Похоже, что может происходить следующее: (1) весь трафик обрабатывается через порт 80, а затем (2) ServerAlias ​​x.abc.com соответствует (и используется для) admin.x.abc.com . Обратите внимание, из документации Apache относительно сопоставления:

Виртуальные хосты на основе имен для наиболее подходящего набора из обрабатываются в том порядке, в котором они появляются в конфигурации . Используется первое совпадение ServerName или ServerAlias ​​ без разницы в приоритете для подстановочных знаков (ни для ServerName и ServerAlias).

0
ответ дан 3 December 2019 в 07:24

Теги

Похожие вопросы