apache default virtualhost не работает

558
peter

Я настроил два веб-сайта на своем VPS: один http сайт example2.com, другой https site example1.com:

Listen 80 Listen 443  <virtualhost *:443> ServerName example1.com DocumentRoot "/var/www/example1.com" </virtualhost>  <virtualhost *:80> ServerName example2.com DocumentRoot "/var/www/example2.com" </virtualhost> 

Теперь, если я захожу на http://example1.com, я на самом деле открываю http://example2.com . Как это остановить? Я полагаю, http://example1.com не доступен. Я попытался добавить виртуальный хост по умолчанию, надеясь, что http://example1.com откроет файл /var/www/default/index.html, но это не помогло. http://example1.com всегда перенаправляет на http://example2.com :

Listen 80 Listen 443  <virtualhost *> DocumentRoot "/var/www/default" </virtualhost>  <virtualhost *:443> ServerName example1.com DocumentRoot "/var/www/example1.com" </virtualhost>  <virtualhost *:80> ServerName example2.com DocumentRoot "/var/www/example2.com" </virtualhost> 
0
Почему вы выбрали порт 443 для example1.com? Вы настроили SSL? Gerard H. Pille 6 лет назад 0

2 ответа на вопрос

0
Gerard H. Pille

Когда вы используете http: //, вы подключаетесь к порту 80. На порту 80 у вас есть только example2.com, который обрабатывает все запросы на порт 80. Попробуйте использовать:

https://example1.com 

По умолчанию https подключается к порту 443. Вы можете изменить настройки по умолчанию, указав порт.

http://example1.com:443/ 
0
Anaksunaman

Теперь, если я захожу на http://example1.com, я на самом деле открываю http://example2.com .

Это (частично), потому что порт 80 и порт 443 не являются автоматически взаимозаменяемыми. Нет (вообще говоря) никаких механизмов для автоматического перенаправления запросов с одного порта на другой, если вы не укажете это поведение на самом сервере (обратите внимание, что это исключает некоторые подключаемые модули браузера или функции, которые заставляют HTTPS-соединения).

Я полагаю, что http://example1.com не доступен [.]

Это правильно. Если вы не определили виртуальный хост HTTP на порту 80 с этим доменом, он не существует и, следовательно, не может быть доступен (забывая о хостах по умолчанию). Я предполагаю, что вы определили example1.com в вашем файле hosts или DNS.

Я пытался добавить виртуальный хост по умолчанию [...], но это не помогло.

Могут быть другие проблемы с вашей конфигурацией. Тем не менее, вам, скорее всего, нужно (по крайней мере, для начала) фактическая запись виртуального хоста, соответствующая http://example1.com :

Listen 80 Listen 443  # Virtual Hosts For Basic HTTP Services  <VirtualHost *:80>  ServerName example1.com  # We can use * to catch all sub-domains other than e.g. www # ServerAlias www.example1.com *.example1.com  ServerAlias www.example1.com  # DocumentRoot "/var/www/example1.com" # DocumentRoot "/var/www/default"  # If we get any requests on port 80 for example1.com  # redirect them to e.g. http://www.example1.com:443/  Redirect permanent / http://www.example1.com:443/  </VirtualHost>  # This is not an SSL (HTTPS) virtual host  <VirtualHost *:443> ServerName example1.com DocumentRoot "/var/www/example1.com" </VirtualHost>  # Our other domain  <VirtualHost *:80> ServerName example2.com DocumentRoot "/var/www/example2.com" </VirtualHost> 

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