Apache указывает на неправильный файл vhost conf - PullRequest
0 голосов
/ 18 января 2020

У меня fre sh VPS на Ubuntu 18. Установили только PHP и Apache. Создан только один конфиг vhost:

<VirtualHost *:80>
  ServerName vp123.ovh.net
  DocumentRoot /var/www/app
</VirtualHost>

После apache realod, домен указывает на папку по умолчанию / var / www/html вместо моего / var / www/app

000-default.conf по умолчанию:

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

apache2ctl -S выводит:

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server vp123.ovh.net (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost vp123.ovh.net (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost vp123.ovh.net (/etc/apache2/sites-enabled/vp123.ovh.net.conf:1)

ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

При указании нового домена для этого Сервер - работает отлично. Но этот «домен по умолчанию» всегда указывает на папку по умолчанию. Отключение 000-default.conf помогает, но я не хочу этого делать.

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Виртуальный хост, определенный в 000-default.conf, не имеет директивы ServerName, поэтому он наследует значение из своего родительского контейнера (в данном случае настройки основного сервера), и я предполагаю, что такая директива также имеет vp123.ovh.net в качестве значения. Таким образом, Apache учитывает совпадения первого виртуального хоста.

A ServerName следует указывать внутри каждого блока <VirtualHost>. Если оно отсутствует, ServerName из «основной» конфигурации сервера будет унаследовано.

Поскольку вы хотите использовать это имя в другом месте, возможное решение - установить явное значение, которое не мешать, например:

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/html
</VirtualHost>
0 голосов
/ 18 января 2020

Apache выбирает виртуальный хост, как описано в документации .

Учитывая процесс выбора vhost, вы можете выбрать следующие варианты:

  1. Отключить vHost по умолчанию Вам это не нужно.
  2. Действительно. Почему вы хотите сохранить его?
  3. Измените объявление vHost по умолчанию на <VirtualHost *>. Поэтому, делая другой vHost по умолчанию для запросов, направленных на порт 80.
  4. Добавьте IP-адрес вашего сервера в ваше объявление vhost. (<VirtualHost 1.2.3.4:80>) Тогда он будет иметь приоритет над vhost *:80 по умолчанию для запросов, направленных на этот IP-адрес. Обратите внимание, что запросы к другим IP-адресам вашего сервера по-прежнему будут обрабатываться *:80 -vHost.
  5. Установить DocumentRoot /var/www/app в вашем vHost по умолчанию. Это потребует от вас вносить изменения в конфигурацию в нескольких vHost каждый раз и, таким образом, увеличивает вероятность ошибок.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...