Как иметь несколько сайтов, использующих Apache2?

Я хотел бы иметь 2 сайта на моей машине для разработки.

Я отредактировал / etc / hosts следующим образом

127.0.0.1       restaurant.local    www.restaurant.local
127.0.0.1   lrv4.local      www.lrv4.local

Я создал 2 новых файла /etc/apache2/sites-available/restaurant.local и ../lrv4.local

<VirtualHost restaurant.local:80>
    ServerName restaurant.local
    ServerAlias www.restaurant.local
    DocumentRoot /var/www/restaurant/public
    <Directory /var/www/restaurant/public/>
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    CustomLog /var/log/apache2/restaurant.local-access.log combined
</VirtualHost>

<VirtualHost lrv4.local:80>
    ServerName lrv4.local
    ServerAlias www.lrv4.local
    DocumentRoot /var/www/lrv4/public
    <Directory /var/www/lrv4/public/>
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    CustomLog /var/log/apache2/lrv4.local-access.log combined
</VirtualHost>

эти 2 файла относительно похожи друг на друга.

Я включил эти 2 сайта с помощью

sudo a2ensites restaurant.local
sudo a2ensites lrv4.local

Я также проверяю включенные сайты с помощью

ls /etc/apache2/sites-enabled

Моя проблема в том, что когда я пытался получить доступ к lrv4.local, я получил страницу, принадлежащую to restaurant.local, я попытался проверить файл журнала, который я объявил выше в файле конфигурации VirtualHost, все журналы зарегистрированы в /var/log/apache2/restaurant.local-access.log, ничего не записано в / var / log / apache2 / lrv4.local-access.log.

Пожалуйста, помогите.

2
задан 29 August 2013 в 12:51

1 ответ

Отредактировал мой ответ после прочтения в Apache docs : Технически, вы можете указать домен в VirtualHost, но он не рекомендуется , потому что он может иметь неожиданные эффекты с DNS . Я предполагаю, что это случилось с вашим конфигом.


В вашей конфигурации Apache вы использовали директиву VirtualHost, возможно, проблемным способом. Вы указали в нем доменное имя, т.е. г. <VirtualHost restaurant.local>. Но это не рекомендуется в пользу указания IP-адреса серверов. Доменные имена определяются внутри блока VirtualHost, например, с помощью ServerName или ServerAlias.

В директиве VirtualHost вы можете указать IP-адрес вашего виртуального хоста для прослушивания, плюс порт:

<VirtualHost 127.0.0.1:80>

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

Если вы хотите применить определение виртуального хоста к любому IP (который достигает сервера на сетевом уровне), вы можете использовать подстановочный знак *, например:

<VirtualHost *:80>
0
ответ дан 29 August 2013 в 12:51

Другие вопросы по тегам:

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