Apache настройка виртуальных хостов: Apache — HTTP Apache 2.2

Содержание

Как настроить виртуальные хосты Apache на CentOS 8

22.12.20202020-12-22T17:35:06+03:002021-01-14T14:19:48+03:00 CentOS, Linux Комментариев нет

Виртуальные хосты Apache позволяют запускать более одного веб-сайта на одной машине. С помощью виртуальных хостов вы можете указать корень документа сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.

В этой статье объясняется, как настроить виртуальные хосты Apache на сервере CentOS 8.

Содержание

Подготовка

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

  • Доменное имя, указывающее на IP вашего публичного сервера.
  • Apache установлен в вашей системе CentOS .
  • Вы вошли в систему как root или пользователь с привилегиями sudo .

Создание структуры каталогов

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

Корень документа может быть установлен в любое место по вашему желанию.

Мы будем использовать следующую структуру каталогов:

/var/www/
├── example.com
│   └── public_html
├── example2.com
│   └── public_html
├── example3.com
│   └── public_html

Для каждого домена, который будет размещен на сервере, мы создадим отдельный каталог внутри /var/www . В каталоге домена мы создадим каталог public_html который будет корневым каталогом документа домена и будет хранить файлы веб-сайта домена.

Начнем с создания корневого каталога для домена example.com :

sudo mkdir -p /var/www/example.com/public_html

В целях тестирования создайте файл index.html в корневом каталоге документов домена:

sudo nano /var/www/example.com/public_html/index.html

Скопируйте и вставьте в файл следующий код:

/var/www/example.com/public_html/index.html

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example. com</title>
  </head>
  <body>
    <h2>Success! example.com home page!</h2>
  </body>
</html>

Чтобы избежать проблем с разрешениями, измените владельца корневого каталога документов домена на пользователя apache :

sudo chown -R apache: /var/www/example.com

Создание файла виртуального хоста

Есть несколько способов настроить виртуальный хост. Вы можете добавить все директивы виртуального хоста в один файл или создать новый файл конфигурации для каждой директивы виртуального хоста. Как правило, вам следует предпочесть второй подход, который более удобен в обслуживании.

По умолчанию Apache настроен на загрузку всех файлов конфигурации, которые заканчиваются на .conf из каталога /etc/httpd/conf.d/ .

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

/etc/httpd/conf. d/example.com.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>
  • ServerName : имя домена, для которого будет использоваться конфигурация виртуального хоста. Это ваше доменное имя.
  • ServerAlias : все остальные домены, для которых также будет использоваться конфигурация виртуального хоста, например субдомен www .
  • DocumentRoot : каталог, из которого Apache обслуживает файлы домена.
  • Options : эта директива управляет функциями сервера каталогов.
    • -Indexes : предотвращает -Indexes каталогов.
    • FollowSymLinks : этот параметр указывает веб-серверу следовать символическим ссылкам.
  • AllowOverride : указывает, какие директивы, объявленные в файле .htaccess могут переопределять директивы конфигурации.
  • ErrorLog
    , CustomLog : расположение файлов журнала.

Отредактируйте файл в соответствии с вашими потребностями и сохраните его.

Имя файла конфигурации должно заканчиваться на .conf . Вы можете назвать файл конфигурации как хотите. Лучше всего использовать доменное имя в качестве имени файла конфигурации виртуального хоста.

Проверьте синтаксис файла конфигурации с помощью:

sudo apachectl configtest

Если ошибок нет, результат должен выглядеть так:

Syntax OK

Чтобы активировать вновь созданный виртуальный хост, перезапустите службу Apache с помощью:

sudo systemctl restart httpd

Откройте http://example. com чтобы убедиться, что все работает должным образом.

Выводы

В этом руководстве мы показали вам, как создать конфигурацию виртуального хоста Apache в CentOS 8. Вы можете повторить шаги, описанные выше, и создать дополнительные виртуальные хосты для всех ваших доменов.

Если вы хотите защитить свой веб-сайт с помощью сертификата SSL, вы можете создать и установить бесплатный сертификат Letsencrypt SSL .

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Этот пост является частью серии Install LAMP Stack on CentOS 8. Другие сообщения из этой серии:

  • Как установить Apache на CentOS 8
  • Как установить MySQL на CentOS 8
  • Как установить PHP на CentOS 8
  • Защитите Apache с помощью Let’s Encrypt на CentOS 8

Настройка виртуальных хостов Apache на CentOS 8

Содержание

  1. Установка веб-сервера Apache на CentOS 8 / Rocky Linux 8
  2. Создание виртуальных хостов Apache на CentOS 8
  3. Доступ к новому виртуальному хосту
  4. Заключение

Здравствуйте, друзья. В этой статье мы покажем вам, как настроить виртуальные хосты Apache на CentOS 8 или Rocky Linux 8.

Обычно на одном сервере работает несколько веб-сайтов. Каждый из них нуждается в особой конфигурации, так как потребности каждого из них могут отличаться. Именно поэтому необходимо создавать виртуальные хосты.

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

Именно это и является целью данной статьи — показать вам, как это сделать и наилучшим образом. Давайте приступим к настройке виртуальных хостов Apache на CentOS 8.

Установка веб-сервера Apache на CentOS 8 / Rocky Linux 8

Давайте начнем с основ. Сначала мы установим веб-сервер Apache.

sudo dnf update

sudo dnf install httpd

После установки Apache его необходимо запустить. Делается это очень просто, командой:

sudo systemctl start httpd

Обычно он запускается вместе с системой.

sudo systemctl status httpd

Не забудьте проверить статус на наличие ошибок Apache.

sudo systemctl status httpd

Скорее всего, у вас работает брандмауэр (firewall). В этом случае для корректной работы требуется открыть порты 80 и 443.

sudo firewall-cmd --add-port=80/tcp

sudo firewall-cmd --add-port=443/tcp

Перезапустите брандмауэр (firewall), для того чтобы применить сделанные изменения.

sudo firewall-cmd --reload

Создание виртуальных хостов Apache на CentOS 8

Рекомендуемый способ создания виртуальных хостов в CentOS 8 — это создание отдельной папки для каждого из них. Название папки не имеет значения, но удобно использовать имя, которое можно быстро идентифицировать.

В данном случае мы будем использовать в качестве домена test.setiwik.ru. Конечно же мой домен это для примера, вы используйте свой.

Сначала создайте папку:

sudo mkdir /var/www/test.setiwik.ru

После этого сделайте Apache владельцем папки, чтобы все работало нормально.

sudo chown apache:apache /var/www/test.setiwik.ru

Если необходимо, то вы можете назначить папке специальные разрешения.

sudo chmod -R 755 /var/www/test.setiwik.ru

Теперь необходимо создать новый файл конфигурации. Этот файл должен находиться в папке /etc/httpd/conf.d/. Название также не имеет большого значения, но оно должно быть понятным для вас.

Например:

sudo nano /etc/httpd/conf.d/test.setiwik.ru.conf

В этот файл нужно добавить всю конфигурацию Apache для этого сайта. Просто добавьте следующие строки.

<virtualhost *:80>
ServerName test.setiwik.ru
DocumentRoot /var/www/test.setiwik.ru

ErrorLog /var/log/httpd/test.setiwik.ru-error.log
CustomLog /var/log/httpd/test.setiwik.ru-access.log combined
</virtualhost>

ServerName определяет имя домена;

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

Сохраните изменения и закройте редактор.

Чтобы изменения вступили в силу требуется перезагрузка веб-сервера.

sudo systemctl restart httpd

Доступ к новому виртуальному хосту

Теперь создайте HTML документ для тестирования. Например,

sudo nano /var/www/test.setiwik.ru/index.html

И добавьте немного контента, например:

<html>
<body>
Привет, добро пожаловать на SETIWIK
</body>
</html>

Сохраните изменения и закройте редактор.

Теперь откройте веб-браузер и посетите сайт http://test.setiwik.ru. Если ваш сайт работает, то вы все сделали правильно.

Настройка виртуальных хостов Apache на CentOS 8

Заключение

В этой статье вы узнали, как легко настроить виртуальные хосты Apache на CentOS 8 / Rocky Linux 8. Также мы показали вам, как сделать это очень простым способом.

Настройка виртуального хоста на основе имени в Apache —

Последнее обновление:  2021-12-02

Автор:  Rocio Rodriguez


С помощью виртуальных хостов на основе имени вы можете размещать несколько веб-сайтов на одном IP-адресе/сервере. Для каждого веб-сайта потребуется уникальное имя хоста.

Примечание . В этой статье предполагается, что на вашем сервере установлен Apache.

Предварительные условия

  • Веб-сервер Apache.
  • Доступ к привилегированному пользователю Linux, например root.
  • Доступ к записям DNS домена или поддомена.

Процедура

  1. Войдите на свой сервер через SSH и переключитесь на пользователя root.

     $ вс
    или же
    $ судо -я
     
  2. Перейдите к конфигурации вашего сайта Apache.

     Дистрибутивы на основе #RHEL и CentOS:
    # cd /etc/httpd/conf/httpd.conf
    Дистрибутивы на основе #Ubuntu и Debian:
    # cd /etc/apache2/сайты доступны
     
  3. Откройте файл конфигурации, в котором находится ваш сайт.

    Примечание : Этот и следующие шаги могут отличаться в зависимости от вашей конфигурации. Будем считать, что вы используете стандартную версию.

     # нано 000-default.conf
     

    или

     # vim 000-default.conf
     
  4. Добавьте или отредактируйте (если они уже существуют) следующие директивы для желаемого виртуального хоста.

    Примечание : Вы можете добавить столько виртуальных хостов, сколько захотите.

    Однако каждый из них должен иметь уникальное имя сервера. Если вы используете SSL : вы также должны добавить эти директивы к виртуальному хосту SSL, порт 443.

     <Виртуальный хост *:80>
        # Вот имя хоста, к которому вы хотите подключиться:
        Имя сервера www.example.com
        # Возможно, вы захотите добавить псевдоним (необязательно):
        Псевдоним сервера example.com
        # Это расположение файлов вашего сайта:
        DocumentRoot "/www/домен"
    
     
  5. Сохраните и закройте файл. Использование Нано: Сохранить: Контр. + О Введите Выходить: Ctrl + X

    Использование Vim: Esc :wq Введите

  6. Перезапустите Apache Примечание . Этот шаг может меняться в зависимости от вашей ОС.

     Дистрибутивы на основе #RHEL и CentOS:
    # systemctl перезапустить httpd
    Дистрибутивы на основе #Ubuntu и Debian:
    # systemctl перезапустить apache2
     
  7. Добавьте запись A для выбранного имени хоста, указывающую на IP-адрес вашего сервера.

  • Управление записями DNS на портале MyRackspace (специализированные клиенты)
  • Создание записей DNS с помощью Cloud DNS (Cloud Customers)

Используйте вкладку «Обратная связь», чтобы оставлять комментарии или задавать вопросы. Вы также можете начать разговор с нами.

Поделитесь этой информацией:

© Rackspace US, Inc., 2020.

Если не указано иное, контент на этом сайте находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

См. особенности лицензии и ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

4. Виртуальные хосты — Apache Cookbook [Книга]

Глава 4. Виртуальные хосты ее имя, а также ее прозвище. В конфигурации апача файл, каждый альтернативный идентификатор и, возможно, «основной» также известен как виртуальный хост (иногда пишется как vhost), идентифицируемый с

<Виртуальный хост> контейнерная директива. В зависимости от имени, используемого для доступа в Интернет сервер, Apache отвечает соответствующим образом, точно так же, как кто-то мог бы ответить по-разному в зависимости от того, обращаются ли к ней как к «Мисс Джонс» или — Привет, Дебби! Если вы хотите иметь одна система поддерживает несколько веб-сайтов, необходимо настроить Apache соответственно.

Существует два разных типа виртуальных хостов, поддерживаемых Apache. Первый тип, называемый на основе адреса или IP, привязан к числовой сетевой адрес, используемый для доступа к системе. Брюс Уэйн никогда ответил на телефонный звонок: «Бэтмен здесь!» он также не ответил на телефонный звонок в Бэтпещере говоря: «Брюс Уэйн говорит». Однако по телефону отвечает один и тот же человек, точно так же, как это тот же веб-сервер, получающий запрос.

Другой тип виртуального хоста по имени, потому что ответ сервера зависит от того, как он называется. К Продолжая аналогию с телефоном, рассмотрим квартиру, которую делят несколько соседей по комнате; вы звоните по тому же номеру, хотите ли вы поговорите с Дэйвом, Джойсом, Аматэрасу или Джорджем. Так же, как несколько человек могут использовать один номер телефона, несколько веб-сайтов могут использовать один тот же IP-адрес. Однако все IP-адреса, совместно используемые несколькими Apache виртуальные хосты должны быть объявлены с NameVirtualHost директива.

В самых простых конфигурациях Apache отсутствуют виртуальные хосты. Вместо этого применяются все директивы в файле конфигурации. универсально для работы сервера. Окружающая среда определена директивами за пределами любого Контейнеры иногда называют сервер по умолчанию или, возможно, глобальный сервер. нет официального имя для него, но это может стать фактором при добавлении виртуальных хостов в ваша конфигурация.

Но что произойдет, если вы добавите контейнер такой конфигурации? Как те директивы снаружи интерпретируемый контейнер, и каково их влияние на виртуальный хозяин?

Ответ не простой: по существу эффект специфичен к каждой директиве конфигурации. Некоторые наследуются виртуальными хосты, некоторые сбрасываются до значений по умолчанию, а некоторые делают вид, что они никогда не использовались раньше. Вам необходимо ознакомиться с документацией для каждого директива, чтобы знать наверняка.

Существует две основные формы виртуальных хостов: виртуальные хосты на базе IP, где каждый виртуальный хост имеет свой уникальный IP-адрес; и по имени виртуальные хосты, где несколько виртуальных хостов работают на одном и том же IP-адресе адрес, но с другими именами. Эта глава покажет вам, как настроить каждый из них и как объединить их на одном сервере. Вы также узнаете, как устранять распространенные проблемы, происходят с виртуальными хостами.

4.1. Настройка виртуальных хостов на основе имени

Проблема

У вас есть только один IP-адрес, но вы хотите поддерживать более одного веб-сайта в вашей системе.

Решение

Использовать NameVirtualHost * директива в сочетании с разделы:

 ServerName 127.0.0.1
ИмяВиртуальныйХост *
<Виртуальный хост *>
    Имя Сервера TheSmiths.name
    DocumentRoot "C:/Apache/Sites/TheSmiths"

        
<Виртуальный хост *>
    ИмяСервера JohnSmith.name
    DocumentRoot "C:/Apache/Сайты/JustJohnSmith"
 

Обсуждение

Поскольку IP-адреса все труднее найти, виртуальные хостинг — это наиболее распространенный способ запуска нескольких веб-сайтов на одном и том же сервер Апач. Предыдущий рецепт работает для большинства пользователей в большинстве случаев. ситуации с виртуальным хостингом.

* в предыдущих правилах означает, что указанные хосты работают по всем адресам. Для машины только с один адрес, это означает, что он работает по этому адресу, но также работать на шлейфе или локальный хост адрес. Таким образом, если вы сидите за физической серверной системой, вы может просматривать веб-сайт.

Аргумент к <Виртуальный хост> директива контейнера такая же в качестве аргумента для NameVirtualHost директива. Указание имени хоста здесь может игнорировать виртуальный хост при запуске сервера и запросы к этому виртуальный хост может неожиданно перейти в другое место. Если ваш сервер имен не работает или иным образом не отвечает в то время, когда ваш сервер Apache запускается, то Apache не может сопоставить частности раздел на NameVirtualHost директива, которой он принадлежит.

Запросы, для которых нет виртуального хоста в списке, первый виртуальный хост, указанный в файле конфигурации. В случае предыдущем примере, имена хостов, которые явно не упоминаются в один из виртуальных хостов будет обслуживаться TheSmiths.name виртуальный хост.

Особенно полезно запустить httpd -S и наблюдайте за конфигурацией виртуального хоста как Apache понимает его, чтобы увидеть, соответствует ли он тому, что вы понимать это. httpd -S возвращает конфигурация виртуального хоста, показывающая, какие хосты основаны на имени, которые основаны на IP, и каковы значения по умолчанию.

Несколько имен могут быть перечислены для конкретного виртуального хоста с помощью Псевдоним сервера директива, как показано здесь:

 ServerName TheSmiths.name
Псевдоним сервера www.TheSmiths.name Smith.Family.name 

Важно понимать, что виртуальные хосты отображают сервер указанный в основной части вашего файла конфигурации больше не доступный — вы должны явно создать раздел виртуального хоста для этого хоста. Сначала укажите этот хост, если вы хотите, чтобы он был по умолчанию сервер.

Добавление виртуальные хосты на основе имени для вашего Apache конфигурация не волшебным образом добавляет записи на ваш DNS-сервер. Ты должны по-прежнему добавлять записи на ваш DNS-сервер, чтобы имена разрешались на IP-адрес серверной системы. Когда пользователи вводят ваш сервер имя (имена) в адресную строку браузера, сначала их компьютеры связаться с DNS-сервером, чтобы найти это имя и преобразовать его в IP-адрес адрес. Если записи DNS нет, то их браузеры не могу найти ваш сервер.

Для получения дополнительной информации о настройке DNS-сервера см. документацию для программного обеспечения DNS, которое вы используете, или поговорить своему интернет-провайдеру, если у вас нет собственного DNS сервер.

См. также

  • http://httpd.apache.org/docs/vhosts/

4.2. Назначение одного виртуального хоста на основе имени по умолчанию

Проблема

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

Решение

Добавьте следующий раздел и перечислите его перед всеми остальными:

 
    имя_сервера по умолчанию
    Корень документа /www/htdocs
    Документ об ошибке 404 /site_list.html
 

Обсуждение

Обратите внимание, что этот рецепт используется в контексте виртуального хосты, поэтому предполагается, что у вас есть другие виртуальные хосты, которые также используя *> обозначение, и что существует также сопровождающий NameVirtualHost * появляются над ними. Мы использовали по умолчанию . название для ясности; вы можете называть это как хотите.

Настройка ErrorDocument 404 к списку доступных сайтов на сервер направляет пользователя к полезному контенту, а не оставляет он застрял с бесполезным сообщением об ошибке 404. Вы можете установить DirectoryIndex в список сайтов, так что пользователи, которые переходят непосредственно на главную страницу этого сайта, также получают полезные Информация.

Рекомендуется явно указать все действительные имена хостов в виде ServerName s или ServerAlias ​​ es, чтобы никто никогда не оказывался на сайт по умолчанию. Однако, если кто-то заходит на сайт напрямую по IP адрес, или если имя хоста добавлено к рассматриваемому адресу перед соответствующий виртуальный хост создан, пользователь все еще получает пользу содержание.

См. также

  • Рецепт 4.4

4.3. Настройка виртуальных хостов на основе адресов

Проблема

У вас несколько IP-адресов адресов, назначенных вашей системе, и вы хотите поддерживать один веб- сайт на каждом.

Решение

Создайте раздел виртуального хоста для каждого IP-адреса, который вы хотите перечислить:

 ServerName 127.0.0.1
<Виртуальный хост 10.0.0.1>
    Имя Сервера TheSmiths.name
    DocumentRoot "C:/Apache/Sites/TheSmiths"

<Виртуальный хост 10. 0.0.2>
    ИмяСервера JohnSmith.name
    DocumentRoot "C:/Apache/Сайты/JustJohnSmith"
 

Обсуждение

Виртуальные хосты, определенные в этом примере, перехватывают все запросы к указанные IP-адреса, независимо от того, какое имя хоста используется для получения там. Запросы на любой другой IP-адрес, не указанный в списке, идут на виртуальный хост, указанный в основной части файла конфигурации.

Указанный ServerName используется в качестве основного имя виртуального хоста, когда нужно, но не используется в процессе отображения запроса на правильный хост. Только IP-адрес консультировались, чтобы выяснить, с какого виртуального хоста обслуживать запросы, не Поле заголовка хоста .

См. также

  • http://httpd.apache.org/docs/vhosts/

4.4. Создание виртуального хоста на основе адреса по умолчанию

Проблема

Вы хотите создать виртуальный хост чтобы перехватить все запросы, которые не соответствуют ни одному из ваших виртуальные хосты на основе адресов.

Решение

Использовать _по умолчанию_ ключевое слово для назначить хост по умолчанию:

 
    Корень документа /www/htdocs
 

Обсуждение

Ключевое слово _default_ создает виртуальный хост, перехватывает все запросы для любых комбинаций адрес:порт, для которых не настроен виртуальный хост.

Директива _default_ может использоваться в сочетании с определенным номером порта, например:

 

Использование этого синтаксиса означает, что указанный виртуальный хост перехватывает все запросы к порту 443, по всем адресам, для которых нет настроен явный виртуальный хост. Это обычный способ настройки SSL, который вы видите в файле конфигурации SSL по умолчанию.

_default_ обычно работает не так, как ожидают люди в случае виртуальных хостов на основе имени. Это не соответствует именам для в котором нет разделов виртуального хоста, только адрес:порт комбинации, для которых не настроены виртуальные хосты. если ты хотите создать хост по умолчанию на основе имени, см. Рецепт 4.2.

См. также

  • Рецепт 4.2

4.5. Смешивание виртуальных хостов на основе адреса и имени

Проблема

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

Решение

Предоставьте NameVirtualHost директива для каждого IP-адреса и действуйте так же, как и с одним IP-адресом:

 ИмяСервера 127.0.0.1
ИмяVirtualHost 10.0.0.1
ИмяVirtualHost 10.0.0.2
<Виртуальный хост 10.0.0.1>
    Имя Сервера TheSmiths.name
    DocumentRoot "C:/Apache/Sites/TheSmiths"

<Виртуальный хост 10.0.0.1>
    ИмяСервера JohnSmith.name
    DocumentRoot "C:/Apache/Сайты/JustJohnSmith"

<Виртуальный хост 10.0.0.2>
    Имя сервера
    DocumentRoot "C:/Apache/Sites/TheFergusons"

<Виртуальный хост 10. 0.0.2>
    ИмяСервера DoriFergusons.name
    DocumentRoot "C:/Apache/Сайты/JustDoriFerguson"
 

Обсуждение

Использование адреса сервера вместо подстановочного знака Аргумент * , заставляет виртуальные хосты слушать только этот IP-адрес. Однако вы должны заметить, что аргумент по-прежнему должен соответствовать аргументу к NameVirtualHost , с которым они связано.

См. также

  • http://httpd.apache.org/docs/vhosts/

4.6. Массовый виртуальный хостинг с mod_vhost_alias

Проблема

Вы хотите разместить много виртуальных хостов, каждый из которых точно такая же конфигурация.

Решение

Использовать VirtualDocumentRoot и VirtualScriptAlias ​​ предоставлено mod_vhost_alias .

 ВиртуальныйДокументРут /www/vhosts/%-1/%-2. 1/%-2/htdocs
VirtualScriptAlias ​​/www/vhosts/%-1/%-2.1/%-2/cgi-bin 

Обсуждение

Этот рецепт использует директивы из mod_vhost_alias , который вы могли не установить Apache при сборке, так как он не является одним из модули, которые включены по умолчанию.

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

В этом конкретном примере запросы контента от www.example.com обслуживается из каталога /www/vhosts/com/e/example/htdocs или из /www/vhosts/com/e/example/cgi-bin (для CGI Запросы). Полный набор доступных переменных показан в таблице 4-1.

Таблица 4-1. Переменные mod_vhost_alias

Переменная

Значение

%%

вставить %

вставьте номер порта виртуального хоста

%M. N

вставить (часть) имя

M и N могут иметь положительные или отрицательные целые значения, которые имеют следующие значения (см. Таблицу 4-2).

Таблица 4-2. Значения значений переменных

Значение

Значение

0

Полное имя

1

Первая часть имени

-1

Последняя часть имени

2

Вторая часть имени

-2

Предпоследняя часть имени

2+

Вторая и все последующие части

-2+

Предпоследняя и все последующие части

Когда значение помещается в первую часть аргумента — в часть M %M. N — относится к частям самого имени хоста. При использовании во второй части — N — относится к конкретному буква из этой части имени хоста. Например, в имени хоста www.example.com , значения переменных как показано в таблице 4-3.

Таблица 4-3. Примеры значений имени хоста www.example.com

Значение

Значение

%0

www.example.com

%1

www

%2

пример

%3

ком

%-1

ком

%-2 ​​

пример

%-3

www

%-2,1

и

%-2,2

х

%-2,3+

достаточно

В зависимости от количества виртуальных хостов вы можете создать структура каталогов, разделенная в алфавитном порядке по имени домена, по домен верхнего уровня или просто по имени хоста.

См. также

  • http://httpd.apache.org/docs/mod/mod_vhost_alias.html

  • http://httpd.apache.org/docs/vhosts/

4.7. Массовый виртуальный хостинг с использованием правил перезаписи

Проблема

Хотя есть модуль — mod_vhost_alias — который предназначено явно для поддержки большого количества виртуальных хостов, это очень ограничивает и требует, чтобы каждый виртуальный хост был настроен точно так же. Вы хотите поддержать большое количество vhosts, настроенных динамически, но при этом вы хотите избегать 9(.*)$ /home/%2$1

Обсуждение

mod_vhost_alias полезен, но лучше всего подходит для настройки, где каждый виртуальный хост идентичен во всех отношениях, но имя хоста. Использование mod_vhost_alias исключает использование других модулей сопоставления URL-адресов, таких как mod_userdir , mod_rewrite , и mod_alias , и это может быть очень ограничивающим. Использование mod_rewrite менее эффективно, но более гибкий.

Например, при использовании mod_vhost_alias вы должны сделать все ваши хосты с mod_vhost_alias ; тогда как с этим альтернативным подходом вы можете сделать некоторые из ваших хостов используя правила перезаписи и другие, использующие обычный виртуальный хост приемы конфигурации.

Директивы в запросах карты решений для www.something.com (или без www ) в каталог /дом/что-то .

См. также

  • Рецепт 5.16

  • http://httpd.apache.org/docs/vhosts/

  • http://httpd.apache.org/docs/mod/mod_rewrite.html

4.8. SSL и виртуальные хосты на основе имен

Проблема

Вы хотите иметь несколько Веб-сайты SSL на том же сервере.

Решение

В большинстве распространенных реализаций SSL вы ограничены одним SSL хоста по адресу и номеру порта. Таким образом, либо вам нужно иметь уникальный IP-адрес для каждого хоста SSL или запускайте их на альтернативных портах для получить более одного на определенный IP-адрес:

 Listen 443
Слушай 444
<Виртуальный хост 10.0.1.2:443>
    Имя_сервера secure1.example.com
    Корень документа /www/vhosts/secure1
    SSLEngine включен
    SSLCertificateFile /www/conf/ssl/secure1.crt
    SSLCertificateKeyFile /www/conf/ssl/secure1.key

<Виртуальный хост 10.0.1.3:443>
    имя_сервера secure2.example.com
    Корень документа /www/vhosts/secure2
    SSLEngineOn
    SSLCertificateFile /www/conf/ssl/secure2.crt
    SSLCertificateKeyFile /www/conf/ssl/secure2.key

<Виртуальный хост 10.0.1.3:444>
    имя_сервера secure3.example.com
    Корень документа /www/vhosts/secure3
    SSLEngineOn
    SSLCertificateFile /www/conf/ssl/secure3. crt
    SSLCertificateKeyFile /www/conf/ssl/secure3.key
 

Обсуждение

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

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

Можно запускать хосты SSL на портах, отличных от порта 443, если номер порта явно указан в URL-адресе. Это позволит вам обойти это ограничение, но это будет дополнительным бременем на конечном пользователе, чтобы ввести правильный URL-адрес с номером порта.

См. также

  • Рецепт 4.11

4.9. Ведение журнала для каждого виртуального хоста

Проблема

Вам нужен каждый виртуальный хост иметь свои собственные лог-файлы.

Решение

Укажите Errorlog и CustomLog в каждом объявлении виртуального хоста:

 
    Имя сервера waldo.example.com
    DocumentRoot /home/waldo/www/htdocs
    Журнал ошибок /home/waldo/www/logs/error_log
    CustomLog /home/waldo/www/logs/access_log вместе
 

Обсуждение

Различные директивы ведения журналов могут быть размещены либо в основной части вашего конфигурационного файла или внутри Раздел . Когда он размещен внутри виртуального хоста записи журнала для этого виртуального хоста помещаются в указанный файл журнала, а не в файл(ы) журнала, определенные в основная конфигурация сервера.

Предупреждение

Каждый файл журнала учитывается в общем количестве файлов и сети соединения, которые разрешено иметь вашему серверу. Если у вас есть 100 виртуальных хосты, каждый со своим журналом ошибок и активности, это 200 открытых каналов, и если квота сервера 256, вы можете обрабатывать только 56 параллельные запросы в любой момент времени.

В приведенном здесь рецепте файлы журнала помещаются в домашнюю каталог конкретного пользователя, а не в основной журнал каталог. Это упрощает доступ к этим файлам, но вы все равно необходимо принять соответствующие меры предосторожности, чтобы установить разрешения на рассматриваемый каталог. Обратитесь к главе 6 для обсуждение прав доступа к файлам.

См. также

  • Глава 3

  • Глава 6

4.10. Разделение файла журнала

Проблема

Из-за большого количества виртуальные хосты, вы хотите иметь один файл журнала и разделить его впоследствии.

Решение

 LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
CustomLog logs/vhost_log vhost 

Затем, после ротации файла журнала:

 split-logfile < logs/vhost_log 

Обсуждение

Формат журнала директива в этом рецепте создает log-файл, похожий на общий файл журнала . формате, но дополнительно содержит имя виртуального хоста, доступ. разделенный файл журнала утилита разбивает этот файл журнала на свои составляющие виртуальные хосты.

См. также

  • Рецепт 3.11

4.11. Виртуальные хосты на основе портов

Проблема

Вы хотите представить другой контент для HTTP соединения на разных портах.

Решение

Явно укажите номер порта в объявление:

 Слушать 8080
    <Виртуальный хост 10. 0.1.2:8080>
        DocumentRoot /www/vhosts/port8080
    
    Слушай 9090
    <Виртуальный хост 10.0.1.2:9090>
        Корень документа /www/vhosts/port9090
    <Виртуальный хост> 

Обсуждение

Виртуальный хостинг на основе портов несколько реже, чем другие методы, описанные в этой главе. Однако, есть множество ситуаций, в которых это может быть полезно. если ты имеют только один IP-адрес, не имеют возможности добавлять имена хостов в DNS или если ваш интернет-провайдер блокирует входящий трафик через порт 80, может быть полезно запускать виртуальные хосты на других портах.

Посетители вашего веб-сайта должны указать номер порта в URL-адресе, они используют. Например, для загрузки контента со второго виртуального хоста указанный ранее, может использоваться следующий URL-адрес:

 http://server.example.com:9090/ 

См. также

  • http://httpd.apache.org/docs/vhosts/

4.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *