Я использую Apache 2.4 в Ubuntu 16.04.
Независимо от того, что я делаю - не могу заставить виртуальные хосты работать, все маршрутизируется в конфигурацию, определенную в 000-default.conf. У меня включены следующие сайты:
dev.conf
<VirtualHost *.80>
ServerName dev.example.com
DocumentRoot "a valid path"
ProxyPass /api http://localhost:8090
ServerAdmin webmaster@example.com
ProxyPreserveHost On
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy localhost
</VirtualHost>
000-default.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.example.com [OR]
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>
Конечно, домен был изменен на example.com
и я удалил реальный путь к файлу для корня документа.
Оба файла появляются /etc/apache2/sites-enabled
, и если добавить мусор в dev.conf, Apache не запускается, поэтому я знаю, что он его читает.
DNS настроен правильно - nslookup для dev.example.com и example.com возвращают один и тот же правильный IP (проверено из внешней сети).
У меня была аналогичная установка с Debian и Apache 2.2, и она работала отлично (ее больше нет, сравнивать не могу).
Любой отправленный мной запрос направляется 000-default.conf, dev.example.com или что-нибудь еще-это-valid.example.com, поскольку у меня нет DocumentRoot
директива (я тоже пытался ее добавить) из-за того, что я перенаправляюсь на версию https, я получаю значение по умолчанию /var/www/html
.
Этот путь не отображается ни в одном файле конфигурации и, вероятно, скомпилирован как значение по умолчанию для DocumentRoot
.
Есть ли у кого-нибудь идеи, как сделать dev.conf виртуальный хост работает?
У вас опечатка:
<VirtualHost *.80>
Должно быть
<VirtualHost *:80>