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

По своей природе виртуальные хосты бывают двух типов: «name-based» и «address-based».
Хосты первого типа сервер обслуживает на основе их доменного имени,
получаемого от клиента в момент запроса. Виртуальные Хосты второго типа
обслуживаются сервером на основании IP-адреса интерфейса, на который
поступил запрос от клиента. Также, конечно же, можно комбинировать эти
два типа, т. е. на определённом IP-интерфейсе «вешать» определённые
name-based виртуальные хосты.
Если вы читали одну из предыдущих статей о конфигурировании Nginx, то должны помнить опцию server,
используемую для создания секции виртуального хоста. Таких секций в
вашем файле конфигурации может быть множество, где каждая будет
описывать отдельный виртуальный хост. Таким образом, файл конфигурации,
описывающий несколько виртуальных хостов, будет выглядеть примерно так:
Name-based
Теперь давайте попробуем на практике создать конфигурацию для пары виртуальных name-based виртуальных хостов domain-1.com и domain-2.com. Создайте новый файл конфигурации Nginx, например, в /etc/nginx/sites-available/twohosts
(напоминаю ещё раз: все примеры рассматриваются в контексте
установленного из репозиториев Nginx в Debian 5) и откройте его в
текстовом редакторе. Следующая конфигурация описывает два виртуальных
хоста:
Обратите внимание, что в конфигурации
обоих хостов отсутствует параметр listen, определяющий IP-адрес
интерфейса и порт, на котором хосты будут ожидать входящих соединений.
Таким образом, описанные выше виртуальные хосты будут ожидать соединений
на любом интерфейсе, на порту 80. Далее создайте каталоги для хранения
контента:
И поместите в них по индексному файлу с различным содержимым, чтобы отличить при подключении из браузера один от другого:
Делаем новый конфигурационный файл доступным для загрузки Nginx:
И перезапускаем сервер:
Не забудьте добавить в /etc/hosts вашего клиентского компьютера необходимые записи (естественно, не забудьте заменить IP-адрес сервера на тот, который у вас):
1
|
# echo 192.168.0.1 domain-{1,2}.com >> /etc/hosts
|
На этом всё. Теперь попробуйте с клиентского компьютера открыть браузером URL http://domain-1.com и http://domain-2.com. Если всё настроено верно, то по каждому из URL вы увидите строки «Domain 1» и «Domain 2» соответственно.
Address-based
Иногда бывает необходимо, чтобы
виртуальный хост был доступен только по определённому адресу, а не со
всех интерфейсов сервера. Здесь на помощь приходит уже известный по
предыдущим публикациям параметр listen. Допустим, у вашего сервера есть два интерфейса: 192.168.0.1 и 192.168.0.2. Вам необходимо, чтобы виртуальный хост domain-1.com был доступен только по адресу 192.168.0.1, а хост domain-2.com — по адресу 192.168.0.2. Всё, что вам нужно сделать это задействовать параметр listen в конфигурации каждого из виртуальных хостов:
Комментариев нет:
Отправить комментарий