Как указать 2 разных домена на 1 IP-адрес (Apache)?

11

У меня есть два разных доменных имени, которые я хочу разместить на том же частном хостинге, что и у меня. Я хочу, чтобы они указывали на один и тот же IP-адрес, но при этом имели разный контент (конечно). Как я могу это сделать? Есть ли разные способы сделать это? В таком случае, как лучше. Спасибо.

Нима
источник

Ответы:

14

Apache2 поддерживает обслуживание различного содержимого в зависимости от доменных имен, даже если все эти домены разрешаются на один и тот же IP-адрес. Каждый из доменных имен обрабатываются виртуальным хостом , такое имя имя на основе виртуального хоста .

Вот пример конфигурации для двух доменов:

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>

<VirtualHost *:80>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

Официальную документацию по поддержке виртуальных хостов на основе имен вы найдете здесь .

Однако обратите внимание, что это будет работать только с простыми HTTP-соединениями, а не с HTTPS (HTTP через SSL): виртуальные хосты на основе имен полагаются на знание запрашиваемого имени, но Apache не может знать эту информацию, пока не зашифрован SSL соединение установлено.

Если вам нужно, чтобы ваши настройки также работали с HTTPS, вам нужно полагаться на расширение протокола SSL, которое называется Индикация имени сервера (SNI) ( RFC4366 ). По сути, клиенты с поддержкой SNI (например, веб-браузеры) добавляют дополнительную текстовую информацию при установлении зашифрованного соединения SSL, позволяя серверу знать запрашиваемое имя до того, как соединение SSL будет готово.

Все браузеры пока не поддерживают SNI. На момент написания и согласно Википедии, они делают:

  • Internet Explorer 7 или более поздней версии, в Windows Vista или более поздней версии (не работает в XP, даже в IE 8)
  • Mozilla Firefox 2.0 или более поздняя версия
  • Opera 8.0 или более поздняя версия (протокол TLS 1.1 должен быть включен)
  • Opera Mobile по крайней мере бета-версия 10.1 на Android
  • Google Chrome (Vista или выше, XP на Chrome 6 или новее, OS X 10.5.7 или выше на Chrome 5.0.342.1 или новее)
  • Safari 2.1 или более поздняя версия (Mac OS X 10.5.6 или более поздняя версия и Windows Vista или более поздняя версия)
  • Konqueror / KDE 4.7 или более поздняя версия
  • MobileSafari в Apple iOS 4.0 или более поздней версии
  • Браузер Android по умолчанию на Honeycomb (v3.x) или новее
  • Windows Phone 7
  • MicroB на Maemo

Для размещения нескольких виртуальных хостов на основе имен, доступных через HTTPS, необходимо включить mod_ssl и добавить конфигурацию, аналогичную приведенной в примере выше:

Listen 443      
NameVirtualHost *:443

# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off

<VirtualHost *:443>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/    
</VirtualHost>

<VirtualHost *:443>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

Помните, что для использования SSL требуется, чтобы вы купили SSL-сертификаты для своих доменов или сгенерировали некоторые автоматически подписанные сертификаты и настроили Apache для их использования для SSL-соединений.

p_piotr3k
источник
вы можете сказать имя и путь к файлу конфигурации apache2?
Жоао Пиментел Феррейра
не забудьте перезапустить Apache после измененийsudo service apache2 restart
João Pimentel Ferreira