Сложность с несколькими VHosts на экземпляре EC2 - PullRequest
1 голос
/ 20 ноября 2019

Я признаю, что мои знания о VirtualHosts могут быть поверхностными, но я беру на себя задачу, с которой я борюсь. Мне нужно, чтобы в моем экземпляре EC2 было два домена с двумя разными папками;давайте назовем их domaina.com и domainb.com .

Я настроил файл /etc/httpd/conf/httpd.conf следующим образом;

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/domaina/www/html"
    ServerName "domaina.com"
    ServerName "www.domaina.com"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/domainb/www/html"
    ServerName "domainb.com"
    ServerName "www.domainb.com"
</VirtualHost>

После обновления я перезапустил Apache с помощью команды sudo service httpd restart.

Насколько я могу судить, domaina.com работает без проблем. Он загружает сайт, размещенный по адресу / var / domaina / www / html. Тем не менее, посещение domainb.com направляет меня на сайт domaina.com. Вместо маршрутизации в / var / domainb / www / html, кажется, что это маршрутизация в / var / domaina / www / html /.

1 Ответ

1 голос
/ 20 ноября 2019

Попробуйте изменить его на:

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/domaina/www/html"
    ServerName "domaina.com"
    ServerAlias "www.domaina.com"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/domainb/www/html"
    ServerName "domainb.com"
    ServerAlias "www.domainb.com"
</VirtualHost>

Директива ServerName может появляться в любом месте определения VirtualHost. Тем не менее, каждое появление переопределяет предыдущее появление (в этом VirtualHost). Ваш ServerName "domainb.com" был переопределен на ServerName "www.domainb.com". После этого, поскольку не было совпадения для имени хоста domainb.com, использовалось значение по умолчанию VirtualHost, и оно является верхним.

...