Apache Виртуальный Хост С Динамическими субдоменами

Моя цель состоит в том, чтобы смочь создать 2 виртуальных хоста, где каждый соответствует dev среде и другому к тестовой среде в моей локальной машине человечности 16.04. Одна вещь, которая конкретна к этому приложению, состоит в том, что оно должно поддерживать динамические субдомены. Некоторые из них фиксируются как вход в систему и администраторский субдомен, но также и у каждого пользователя будет их собственный субдомен. Этот виртуальный хост хорошо работает для dev среды:

<VirtualHost *:80>
        ServerName myapp.local
        ServerAlias *.myapp.local
        DocumentRoot /var/www/myapp/web
        <Directory /var/www/myapp/web/>
            AllowOverride All
            Require local
        </Directory>
        ErrorLog /var/www/myapp/logs/error.log
        CustomLog /var/www/myapp/logs/access.log combined
</VirtualHost>

Теперь я хочу смочь иметь виртуальный хост к тестовой версии и получить доступ к ней этим URL: login.test.myapp.local, admin.test.myapp.local... Вот виртуальный хост, который я имею, который все еще не работает, потому что запрос всегда падает в первом виртуальном хосте в это время:

<VirtualHost *:80>
        ServerName test.myapp.local
        ServerAlias *.test.myapp.local
        DocumentRoot /var/www/test.myapp/web
        <Directory /var/www/test.myapp/web/>
            AllowOverride All
            Require local
        </Directory>
        ErrorLog /var/www/test.myapp/logs/error.log
        CustomLog /var/www/test.myapp/logs/access.log combined
</VirtualHost>

Я знаю, что должен сказать первому виртуальному хосту игнорировать URL, которые запускаются с "теста". и "*.test". но я не знаю, как сделать это.

Спасибо

2
задан 10 September 2018 в 06:53

1 ответ

Apache интерпретирует свою конфигурацию в порядке, в котором он зарегистрирован. Например, мы ставим первое место отклонять директивы и на втором позволить директивы.

То, что Вам нужно, должно поместить Ваши виртуальные конфигурации хоста в правильный порядок. Например, поместите тест виртуальная конфигурация хоста в conf названный файл 001-test.myapp.local.conf и регулярный виртуальный хост в файле называют 002-myapp.local.conf. Или если обе конфигурации находятся в одном месте файла тест одно первое:

$ cat /etc/apache2/sites-available/myapp.local.conf 

<VirtualHost *:80>
        ServerName test.myapp.local
        ServerAlias *.test.myapp.local
        DocumentRoot /var/www/test.myapp/web
        <Directory /var/www/test.myapp/web/>
            AllowOverride All
            Require local
        </Directory>
</VirtualHost>

<VirtualHost *:80>
        ServerName myapp.local
        ServerAlias *.myapp.local
        DocumentRoot /var/www/myapp/web
        <Directory /var/www/myapp/web/>
            AllowOverride All
            Require local
        </Directory>
</VirtualHost>

Таким образом запросы, который не соответствует к первому виртуальному хосту, попадут во второе. Вот то, как это работает над Ubuntu 18.04 с Apache/2.4.29:

enter image description here

2
ответ дан 2 December 2019 в 03:31

Другие вопросы по тегам:

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