Як вказати 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.


Ви можете сказати ім'я та шлях файлу конфігурації apache2?
Жоао Піментел Феррейра

не забудьте перезапустити апаш після змінsudo service apache2 restart
Жоао Піментел Феррейра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.