1

Я новичок в Linux и Apache.

У меня есть веб-сайт, размещенный на моем компьютере с использованием Apache. Предположим, что домен www.myweb.com . Теперь я хочу сделать 3 субдомена a.myweb.com и b.myweb.com .

Мой первый вопрос заключается в том, могу ли я сделать это с помощью виртуальных хостов. Потому что все примеры виртуальных хостов, которые я могу найти, используют разные домены, поэтому я не уверен, относится ли это также к поддомену.

Мой второй вопрос основан на том, что виртуальные хосты работают на поддомен. В моем файле httpd.conf значение DocumentRoot равно /srv/http . В /srv/http я создал 3 папки, по default , a и b . А вот мой httpd-vhosts.conf:

<VirtualHost myIP:80>
    ServerAdmin a@b.c 
    DocumentRoot "/srv/http/default/public"
    ServerName www.myweb.com
    ServerAlias myweb.com
    ErrorLog "/srv/http/default/logs/error.log"
    CustomLog "/srv/http/default/logs/access.log" combined
    <Directory />
        Options FollowSymLinks Indexes
        Require all granted
    </Directory> 
</VirtualHost>


<VirtualHost myIP:80>
    ServerAdmin a@b.c 
    DocumentRoot "/srv/http/a/public"
    ServerName a.myweb.com
    ErrorLog "/srv/http/a/logs/error.log"
    CustomLog  "/srv/http/a/logs/access.log" combined
</VirtualHost>


<VirtualHost myIP:80>
    ServerAdmin a@b.c 
    DocumentRoot "/srv/http/b/public"
    ServerName b.myweb.com
    ErrorLog "/srv/http/b/logs/error.log"
    CustomLog  "/srv/http/b/logs/access.log" combined   
    <Directory />
        Options FollowSymLinks Indexes
        Require all granted
    </Directory> 
</VirtualHost>

Теперь проблема в том, что когда я в браузере набираю www.myweb.com , myweb.com , a.myweb.com или b.myweb.com , меня всегда перенаправляют на DocumentRoot , который называется /srv/http . Так я сделал что-то не так или поддомен не может работать таким образом? Большое спасибо.

2 ответа2

0

Я заметил, что вы используете <VirtualHost myIP:80> в начале вашего раздела виртуального хоста. Я использую <VirtualHost *:80> для всех моих виртуальных хостов на основе имен - см. Как настроить конфигурацию виртуального хоста Apache (с примерами), чтобы узнать разницу между настройкой сервера для виртуальных хостов на основе имен и виртуальных хостов на основе IP. Если у сервера есть несколько IP-адресов, и вы хотите, чтобы сайты отвечали на разные IP-адреса, я думаю, вы бы указали IP-адрес, но если все сайты должны быть доступны с использованием любого IP-адреса, который прослушивает сервер, попробуйте «*» вместо IP-адреса в разделах виртуального хоста, чтобы понять, имеет ли это значение. В остальном ваша конфигурация выглядит аналогично моей. Вы также можете попробовать httpd -S чтобы проверить синтаксис конфигурации VirtualHost, как предложено в этой статье, чтобы увидеть, выглядит ли что-то, что Apache сообщает с помощью этой проверки, выглядит неправильно.

0

Вы должны использовать полные пути в директиве «Directory», как требуется в документации Apache. С вашей конфигурацией вы фактически настраиваете доступ к вашему пути 'DocumentRoot', настроенному в httpd.conf от соответствующего имени хоста.

Раздел конфигурации «Каталог» для вашего веб-сайта по умолчанию (www) может выглядеть следующим образом:

<Directory /srv/http/default/public>
    Options FollowSymLinks Indexes
    Require all granted
</Directory>

Также следует отметить, что доступ по умолчанию для Каталога "/" разрешает любой доступ, что означает, что Apache httpd будет обслуживать любой файл, сопоставленный с URL-адресом. Поэтому, как предлагается в документации, вы можете изменить его на что-то более ограниченное в вашем httpd.conf.

<Directory "/">
    Require all denied
</Directory>

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