виртуальный хост, предотвращающий сервер по умолчанию

У меня есть домашний сервер, который я использую для разработки, и иногда я борюсь с тем, что я ввожу один URL, и он загружает неправильный сайт, например,

:

https://dev.demoapp.com => https://dev.demoapp.com (исправить)

http: //dev.demoapp .com => http://dev.mysite.com (неверно)

, поэтому я пошел посмотреть, что Apache загружает все как:

Конфигурация VirtualHost:

*: 443 - это NameVirtualHost

сервер по умолчанию dev.demoapp.com (/etc/apache2/sites-enabled/dev.demoapp.com.conf : 1)

порт 443 namevhost dev.demoapp.com (/etc/apache2/sites-enabled/dev.demoapp.com.conf:1)

порт 443 namevhost dev.test. com (/etc/apache2/sites-enabled/dev.test.com.conf:1)

*: 80 - это NameVirtualHost

сервер по умолчанию dev.mysite.com (/ etc / apache2 / sites-enabled / dev.mysite.com.conf: 1)

порт 80 namevhost dev.mysite.com (/ etc / apache2 / sites-enabled / dev). mysite.com.conf: 1)

порт 80 namevhost dev.local.com (/etc/apache2/sites-enabled/dev.local.com.conf:1)

Я заметил, что некоторые сайты появляются дважды, и я не знаю, как это происходит.

как мне сделать так, чтобы http://dev.mysite.com либо перенаправлял на https, либо просто сообщал пользователю свой неверный URL (предпочел бы, чтобы он перенаправлял честно)

-1
задан 15 December 2017 в 20:00

1 ответ

Вы должны определить отдельный контейнер <VirtualHost *:80> с помощью ServeName /dev.demoapp.com или добавить строку ServerAlias /dev.demoapp.com в соответствующий существующий контейнер VirtualHost.

Нельзя обслуживать одни и те же виртуальные хосты с разными портами из ОДНОГО контейнера <VirtualHost ..>, если только вы не работаете с подстановочным знаком для порта.

Я обычно работаю с файлами включений для всех директив, которые используются совместно с VirtualHosts, и помещаю только отдельные директивы, например SSL *, в отдельные директивы <VirtualHost ..:443> (я даже помещаю каждый VIrtualHost в отдельный файл включения.)

Начиная с Apache httpd-2.3.11, не существует эффективной директивы NameVirtualHost (каждый раз, когда комбинация IP-адреса и порта используется в нескольких виртуальных хостах, виртуальный хостинг на основе имени автоматически включается для этого адреса - http: //httpd.apache.org/docs/2.4/mod/core.html#namevirtualhost)

Кроме того, DEFAULT VirtualHost не существует, первая найденная директива <VirtualHost> де-факто является значением по умолчанию Это означает, что все клиентские запросы, чей заголовок HTTP_HOST явно не определен как ServerName или ServerAlias в отдельном <VirtualHost>, обслуживаются в первой конфигурации Virualhost.

Если вы хотите реализовать VirtualHost по умолчанию, вы можете поместить контейнер <VirtualHost *:80> в центральный файл httpd.conf, ДО того, как вы добавите какие-либо дополнительные файлы (до IncludeOptional /etc/apache2/sites-enabled/*.conf или что-то еще), или напишите vhost include-файл, который находится вверху вашего списка, например. 0_default-vhost.conf, с <VirtualHost *:*> или <VirtualHost *>, пожалуйста, попробуйте, какой из них работает.

1
ответ дан 15 December 2017 в 20:00

Другие вопросы по тегам:

Похожие вопросы: