Рейтинг:0

Два веб-сайта VirtualHost не работают вместе под Apache 2.4.

флаг fr

Я использую Apache 2.4 под Ubuntu 18.04.

У меня возникла проблема, когда все адреса, которые я набираю в строке браузера, перенаправляются на один из двух веб-сайтов, которые я настроил (в данном случае, всякий раз, когда я набираю адрес, который должен перенаправлять на другой сайт, мне показывается веб-сайт под Джекил Только.)

Например:

  • печатание Джекил в браузере показывает мне веб-сайт jekyll, как и ожидалось
  • печатание другой сайт в браузере также показывает мне веб-сайт jekyll, несмотря на то, что другой виртуальный хост прослушивает это имя

у меня есть это два отдельных сайта настроен как VHost под /etc/apache2/сайты доступны (оба из них включено с помощью a2ensite)

  • jekyll.conf

    <VirtualHost *:80>
          DirectoryIndex index.html
          DocumentRoot /var/www/jekyll/_site
          LimitRequestFieldSize 48000
           <Directory />
                  Options FollowSymLinks
                  AllowOverride None
          </Directory>
          <Directory /var/www/jekyll/_site>
                  AllowOverride All
                  Order allow,deny
                  allow from all
          </Directory>
          <Directory /var/www/jekyll/_site/>
                  Order allow,deny
                  allow from all
          </Directory>
    
          ServerName jekyll
          ServerName http://jekyll
          ServerName http://localhost/jekyll
    
          ServerAdmin webmaster@localhost
    </VirtualHost>
    
  • другой-site.conf

    <VirtualHost *:80>
          DirectoryIndex index.html
          DocumentRoot /var/www/other-site/_site
          LimitRequestFieldSize 48000
           <Directory />
                  Options FollowSymLinks
                  AllowOverride None
          </Directory>
          <Directory /var/www/other-site/_site>
                  AllowOverride All
                  Order allow,deny
                  allow from all
          </Directory>
          <Directory /var/www/other-site/_site/>
                  Order allow,deny
                  allow from all
          </Directory>
    
          ServerName other-site
          ServerName http://other-site
          ServerName http://localhost/other-site
    
          ServerAdmin webmaster@localhost
    
    </VirtualHost>
    

Я также добавил эти записи в /и т.д./хосты чтобы localhost перенаправлялся на каждый сайт:

127.0.0.1 локальный хост
127.0.0.1 локальный/джекил
127.0.0.1 локальный/другой-сайт
127.0.0.1 Джекил
127.0.0.1 другой сайт
127.0.1.1 Фелипе-Инспирон-7559
Рейтинг:1
флаг in

Имя сервера в ваших файлах конфигурации Apache не нужно повторять, так как каждая последующая строка заменяет предыдущие.

Вместо этого вы можете использовать Имя сервера с Псевдоним сервера как это:

имя_сервера
Псевдоним сервера jekyll.local *.jekyll *.jekyll.local

Обратите внимание, что это нелогично:

127.0.0.1 локальный/джекил
127.0.0.1 локальный/другой-сайт

Это не домены (или субдомены), а пути под локальный хост. В результате только локальный хост будет наблюдаться. Вот почему я не включил его в конфигурацию Apache, как указано выше.

Итак, имея это в виду, вы можете иметь три Файлы конфигурации Apache:

¢ 000-jekyll.conf

<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName jekyll
      ServerAlias jekyll.local *.jekyll *.jekyll.local

      DirectoryIndex index.html
      DocumentRoot /var/www/jekyll/_site
      LimitRequestFieldSize 48000

      <Directory /var/www/jekyll/_site>
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
      </Directory>

      ErrorLog ${APACHE_LOG_DIR}/jekyll-error.log
      CustomLog ${APACHE_LOG_DIR}/jekyll-access.log combined
</VirtualHost>

¢ 001-другое.conf

<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName other-site
      ServerAlias other-site.local *.other-site *.other-site.local

      DirectoryIndex index.html
      DocumentRoot /var/www/other-site/_site
      LimitRequestFieldSize 48000

      <Directory /var/www/other-site/_site>
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
      </Directory>

      ErrorLog ${APACHE_LOG_DIR}/other-error.log
      CustomLog ${APACHE_LOG_DIR}/other-access.log combined
</VirtualHost>

¢ 999-default.conf

<VirtualHost *:80>
      ServerAdmin webmaster@localhost
      ServerName localhost
      ServerAlias *.localhost * *.*

      DirectoryIndex index.html
      DocumentRoot /var/www
      LimitRequestFieldSize 48000

      <Directory /var/www>
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
      </Directory>

      ErrorLog ${APACHE_LOG_DIR}/local-error.log
      CustomLog ${APACHE_LOG_DIR}/local-access.log combined
</VirtualHost>

Apache обрабатывает трафик в соответствии с порядком файлов конфигурации. Таким образом, любой домен, соответствующий указанным в 000-jekyll.conf будет обрабатываться этим файлом. Если совпадений не найдено, то 001-другое.conf будет проверено. Если совпадений не найдено, то 999-default.conf будет использован. Обратите внимание Псевдоним сервера в 999-default.conf файл и как он полагается на широко открытые подстановочные знаки. Это означает, что он будет рассматриваться как универсальный для трафика, который не соответствует определенным файлам конфигурации.

Примечание: Файлы конфигурации Apache были упрощены, чтобы исключить ненужные Каталог блоки и чтобы каждый хост использовал свои собственные журналы ошибок.

Felipe avatar
флаг fr
Спасибо, я действительно испортил директивы `ServerName`. Спасибо!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.