Настройка виртуальных хостов Apache для запуска нескольких сайтов на одном IP-адресе

679
spin_eight

Я установил веб-сервер Apache на своем компьютере.

И пытается обслуживать 2 сайта с одинаковым IP, исходя из имени домена.
У меня есть 2 домена:

  • example0.com
  • example1.com

Они перенаправляют на один и тот же IP-адрес (я пользуюсь услугами «freenom»). Поэтому, основываясь на доменном имени, мне нужно предоставить разный контент.

Я следую этому уроку по Digital Ocean: « Как настроить виртуальные хосты Apache в Debian 7 »

Я сделал все шаги из него, кроме последнего (« Настройка локальных хостов »).

Результатом является то, что я получаю одинаковый контент для каждого доменного имени.

Я имею в /etc/apache2/sites-available/: example0.com.conf, example1.com.conf, 000-default.confи default-ssl.conf.

В example0.com.confI получил:

<VirtualHost *:80>  # The ServerName directive sets the request scheme, hostname and port that  # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com   ServerAdmin webmaster@localhost  ServerName example0.com  ServerAlias www.example0.com   DocumentRoot /var/www/example0.com/public_html  

в example1.com.confI получил тот же материал, но с example1вместо example0

Я использовал:

a2ensite example0.com  a2ensite example1.com  

а также

service apache2 restart 

Что я делаю не так?

-1
Тот «последний шаг», который вы упомянули («Настройка локальных хостов»), помечен как «Необязательный шаг» и действительно только для настройки локальной среды разработки; не настройка рабочего сервера. Таким образом, настройка должна работать нормально, если к этому IP-адресу привязано реальное доменное имя. Единственное предложение - поскольку вы не показываете свои собственные файлы конфигурации - возможно, вы не перезагружали Apache, чтобы он мог читать в вашей новой конфигурации? JakeGould 7 лет назад 0
Вы используете http или https? важно ответить. OscarAkaElvis 7 лет назад 0
@OscarAkaElvis http spin_eight 7 лет назад 0
@JakeGould я перезапустить это spin_eight 7 лет назад 0
Содержит ли ваш основной файл конфигурации Apache незарегистрированный комментарий NameVirtualHost следующим образом: NameVirtualHost *: 80`? Если нет, раскомментируйте его, чтобы он читался так, и перезапустите Apache. JakeGould 7 лет назад 0
@JakeGould нет, это не spin_eight 7 лет назад 0
@spin_eight Затем попробуйте добавить `NameVirtualHost *: 80` в ваш основной файл конфигурации Apache, перезапустите Apache и посмотрите, что произойдет. JakeGould 7 лет назад 0

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

-1
OscarAkaElvis

Я думаю, что вы в правильном направлении. Проверьте каждый шаг! это должно работать.

Вы должны создать два каталога для двух разных веб-страниц. Скажем так:

/var/www/example0.com/public_html /var/www/example1.com/public_html 

Тогда вы должны установить владельца dirs:

sudo chown -R $USER:$USER /var/www/example0.com/public_html sudo chown -R $USER:$USER /var/www/example1.com/public_html 

Где $ USER является владельцем апача. Это зависит от вашей системы. Может быть www-data, apache, http или любой другой. Я думаю, на Debian должны быть www-данные

Затем создайте читаемые файлы и исполняемые файлы:

sudo chmod -R 755 /var/www 

Давайте создадим отдельную html-страницу для каждого (index.html в обоих случаях):

<html> <head> <title>Welcome to example0.com</title> </head> <body> <h1>Success, example0.com is working!</h1> </body> </html> 

а также

<html> <head> <title>Welcome to example1.com</title> </head> <body> <h1>Success, example1.com is working!</h1> </body> </html> 

Сохраните оба файла каждый на своем собственном каталоге ( /var/www/example0.com/public_htmlи /var/www/example1.com/public_html). Повторяю, оба с именем index.html

Тогда давайте перейдем к созданию конфигурационных файлов VirtualHosts. Давайте использовать в качестве шаблона файл по умолчанию:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example0.com.conf sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example1.com.conf 

Затем отредактируйте каждый с помощью vi, nano или любого текстового редактора. Давайте начнем с example0.conf

<VirtualHost *:80> ServerAdmin admin@example0.com ServerName example0.com ServerAlias www.example0.com DocumentRoot /var/www/example0.com/public_html ErrorLog $/error.log CustomLog $/access.log combined </VirtualHost> 

Затем то же самое для второго файла:

<VirtualHost *:80> ServerAdmin admin@example1.com ServerName example1.com ServerAlias www.example1.com DocumentRoot /var/www/example1.com/public_html ErrorLog $/error.log CustomLog $/access.log combined </VirtualHost> 

Затем мы активируем новые сайты:

sudo a2ensite example0.com.conf sudo a2ensite example1.com.conf 

Затем перезапустите службу Apache, чтобы изменения вступили в силу:

sudo service apache2 restart 

И это все.

Как проверить? Вы можете изменить файл hosts для доступа к новым веб-серверам:

127.0.0.1 localhost 127.0.1.1 guest-desktop 111.111.111.111 example0.com www.example0.com 111.111.111.111 example1.com www.example1.com 

Конечно, вы должны изменить IP-адрес 111.111.111.111 на настоящий, даже ваш IP-адрес локальной сети.

Затем вы можете протестировать на компьютере, на котором вы изменили файл hosts, пытаясь получить к нему доступ через браузер, http://example0.comиhttp://example1.com

Удачи!

Я сделал то же самое, когда я ввожу разные доменные имена, один и тот же контент возвращается, это мой вопрос о spin_eight 7 лет назад 1

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