Apache ServerName * подстановочный знак не работает с vhost_dbd_module

Я пытаюсь перенести свои виртуальные хосты в базу данных mysql, используя vhost_dbd_module.

В различных примерах, которые я нахожу в Интернете, мне предлагают использовать «ServerName *» в качестве подстановочного знака в VirtualHost.

Когда я настраиваю свой VirtualHost таким образом, сервер по умолчанию просто возвращается к DocumentRoot по умолчанию. Он не запрашивает базу данных mysql.

<VirtualHost *:80>
        # catch all other requests that don't get caught above
        ServerName *
        # fallbackDocumentRoot in case mysql server is down
        DocumentRoot /var/html/404

        DBDriver mysql
        DBDParams "host=<hostname> user=<user> dbname=<dbname>"
        DBDocRoot "SELECT documentRoot FROM virtualhosts WHERE serverName = %s" HOSTNAME
</VirtualHost>

Однако, когда я изменяю его на это (указываю имя сервера на domain.tld), он работает правильно (запрашивает базу данных для domain.tld и возвращает правильный документ для domain.tld)

<VirtualHost *:80>
        # catch all other requests that don't get caught above
        ServerName domain.tld
        # fallbackDocumentRoot in case mysql server is down
        DocumentRoot /var/html/404

        DBDriver mysql
        DBDParams "host=<hostname> user=<user> dbname=<dbname>"
        DBDocRoot "SELECT documentRoot FROM virtualhosts WHERE serverName = %s" HOSTNAME
</VirtualHost>

Любые идеи, что неправильно настроено?


person WhiteEyebrows    schedule 10.03.2015    source источник


Ответы (1)


Повозившись еще немного, оказалось, что ServerName * работает только тогда, когда это ПЕРВЫЙ виртуальный хост в системе.

Сначала я переместил его по порядку, с несколькими другими виртуальными хостами под ним (с более конкретным ServerName example.tld), и работали как хосты БД, так и статически настроенные хосты.

person WhiteEyebrows    schedule 11.03.2015