Я настроил два веб-сайта на своем 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>

2 ответа2

0

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

https://example1.com

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

http://example1.com:443/
0

Теперь, если я захожу на 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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .