Настройка виртуальных хостов nginx ubuntu

Обновлено: 04.07.2024

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

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

Чтобы настроить виртуальные хосты, нам нужно убедиться, что Nginx уже установлен на нашем сервере Ubuntu. Если это не так, команда для его установки:

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

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

Nginx для Ubuntu поставляется с некоторыми примерами файлов конфигурации в каталоге /etc/nginx/sites-available. Nginx угрожает каждому файлу в каталоге /etc/nginx/sites-enabled как отдельный файл конфигурации и обрабатывает все эти файлы при запуске. Чтобы создать новый файл конфигурации для нашего домена, мы можем скопировать файл конфигурации по умолчанию.

Далее нам нужно открыть этот файл в нашем любимом текстовом редакторе и отредактировать следующим образом:

После того, как мы закончим редактирование, чтобы активировать новый виртуальный хост, мы можем либо создать символические ссылки на этот файл и поместить его в каталог /etc/nginx/sites-enabled, либо скопировать/переместить фактический файл в /etc/nginx. каталог /sites-enabled. Наиболее распространено создание символической ссылки.

После того, как мы создали хотя бы один виртуальный хост, мы можем удалить файл конфигурации по умолчанию из каталога /etc/nginx/sites-enabled/

После внесения всех этих изменений, чтобы применить их, нам нужно перезапустить Nginx:

Хотели бы вы узнать о Zuul, инструменте управления проектами CI/CD? Скачайте нашу белую книгу и читайте!

Как улучшить свою игру DevOps с помощью Project Gating

Мохаммед Насер 2020-10-29T20:09:29+00:00 13 февраля 2014 г. | Комментарии к записи «Как настроить виртуальные хосты Nginx в Ubuntu» отключены

При использовании веб-сервера Nginx серверные блоки (аналогичные виртуальным хостам в Apache) могут использоваться для инкапсуляции деталей конфигурации и размещения более одного домена на одном сервере.

В этом руководстве мы обсудим, как настроить серверные блоки в Nginx на сервере Ubuntu 16.04.

Предпосылки

В этом руководстве мы будем использовать пользователя без полномочий root с привилегиями sudo. Если у вас нет такого настроенного пользователя, вы можете создать его, следуя нашему руководству по первоначальной настройке сервера Ubuntu 16.04.

    : Используйте это руководство для самостоятельной настройки Nginx. : Используйте это руководство, если вы будете использовать Nginx в сочетании с MySQL и PHP.

Выполнив эти требования, вы можете продолжить работу с этим руководством.

Пример конфигурации

Примечание. Дополнительные сведения о настройке домена в DigitalOcean см. в документации по продуктам «Домены и DNS».

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

Шаг 1. Настройка новых корневых каталогов документов

По умолчанию в Nginx в Ubuntu 16.04 включен один серверный блок. Он настроен на обслуживание документов из каталога /var/www/html .

Хотя это хорошо работает для одного сайта, нам нужны дополнительные каталоги, если мы собираемся обслуживать несколько сайтов. Мы можем считать каталог /var/www/html каталогом по умолчанию, который будет обслуживаться, если запрос клиента не соответствует ни одному из наших других сайтов.

Мы создадим структуру каталогов в /var/www для каждого из наших сайтов. Фактический веб-контент будет помещен в каталог html внутри этих каталогов для конкретных сайтов. Это дает нам некоторую дополнительную гибкость для создания других каталогов, связанных с нашими сайтами, в качестве родственных каталогу html, если это необходимо.

Нам нужно создать эти каталоги для каждого из наших сайтов. Флаг -p указывает mkdir создать все необходимые родительские каталоги по пути:

Теперь, когда у нас есть наши каталоги, мы передадим право собственности на веб-каталоги нашей обычной учетной записи пользователя. Это позволит нам писать им без sudo .

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

Мы можем использовать переменную окружения $USER, чтобы назначить владельца учетной записи, в которую мы в данный момент вошли (убедитесь, что вы не вошли в систему как пользователь root). Это позволит нам легко создавать или редактировать содержимое в этом каталоге:

Разрешения наших корневых веб-сайтов уже должны быть правильными, если вы не изменили значение umask, но мы можем убедиться, набрав:

Теперь наша структура каталогов настроена, и мы можем двигаться дальше.

Шаг 2. Создание образцов страниц для каждого сайта

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

Создайте файл index.html в своем первом домене:

Внутри файла мы создадим действительно простой файл, который указывает, к какому сайту мы обращаемся в данный момент. Это будет выглядеть так:

Сохраните и закройте файл, когда закончите. Чтобы сделать это в nano, нажмите CTRL+o, чтобы записать файл, затем CTRL+x, чтобы выйти.

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

Теперь мы можем открыть новый файл в нашем редакторе:

Измените его, чтобы он ссылался на наш второй домен:

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

Шаг 3 — Создание файлов блоков сервера для каждого домена

Теперь, когда у нас есть контент, который мы хотим обслуживать, нам нужно создать серверные блоки, которые сообщат Nginx, как это сделать.

По умолчанию Nginx содержит один серверный блок с именем default, который мы можем использовать в качестве шаблона для наших собственных конфигураций. Мы начнем с разработки блока сервера нашего первого домена, который затем скопируем для нашего второго домена и внесем необходимые изменения.

Создание файла первого блока сервера

Как упоминалось выше, мы создадим наш первый файл конфигурации блока сервера, скопировав файл по умолчанию:

Теперь откройте созданный вами новый файл в текстовом редакторе с правами sudo:

Игнорируя закомментированные строки, файл будет выглядеть примерно так:

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

Вы можете назначить один из своих сайтов «сайтом по умолчанию», включив параметр default_server в директиву listen, или оставить включенным блок сервера по умолчанию, который будет обслуживать содержимое файла /var/www/html. каталог, если запрошенный хост не может быть найден.

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

Примечание. Вы можете проверить, включена ли опция default_server только в одном активном файле, набрав:

Если найдены совпадения без комментариев более чем в файле (показано в крайнем левом столбце), Nginx сообщит о недопустимой конфигурации.

Следующее, что нам нужно настроить, — это корень документа, указанный в директиве root. Укажите его на созданный вами корень документа сайта:

Когда вы закончите, ваш файл будет выглядеть примерно так:

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

Создание файла второго блока сервера

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

Откройте новый файл с правами sudo в вашем редакторе:

Еще раз убедитесь, что вы не используете параметр default_server для директивы listen в этом файле, если вы уже использовали его в другом месте. Измените директиву root, чтобы она указывала на корень документа вашего второго домена, и измените server_name так, чтобы оно соответствовало доменному имени вашего второго сайта (не забудьте указать все псевдонимы).

Когда вы закончите, ваш файл, скорее всего, будет выглядеть примерно так:

По завершении сохраните и закройте файл.

Шаг 4. Включение блокировки сервера и перезапуск Nginx

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

Мы можем создать эти ссылки, набрав:

Эти файлы теперь связаны с включенным каталогом.Теперь у нас есть три включенных блока сервера, которые настроены на ответ на основе их директивы listen и server_name (подробнее о том, как Nginx обрабатывает эти директивы, можно прочитать здесь):

Чтобы избежать возможной проблемы с памятью хэш-контейнера, которая может возникнуть из-за добавления дополнительных имен серверов, мы также изменим одно значение в нашем файле /etc/nginx/nginx.conf. Откройте файл сейчас:

Сохраните и закройте файл, когда закончите.

Затем проверьте, чтобы ни в одном из ваших файлов Nginx не было синтаксических ошибок:

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

Теперь Nginx должен обслуживать оба ваших доменных имени.

Шаг 5. Изменение файла локальных хостов для тестирования (необязательно)

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

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

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

Если у вас дома компьютер Mac или Linux, вы можете отредактировать нужный файл, набрав:

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

Сохраните и закройте файл, когда закончите.

Шаг 6. Проверка результатов

Теперь, когда вы все настроили, вы должны проверить, правильно ли работают ваши серверные блоки. Вы можете сделать это, посетив домены в своем веб-браузере:

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

Первый блок сервера Nginx

Если вы посетите второе доменное имя, вы должны увидеть немного другой сайт:

Второй блок сервера Nginx

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

На этом этапе, если вы изменили файл hosts на локальном компьютере для проверки, вы, вероятно, захотите удалить добавленные строки.

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

Заключение

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

В этой статье рассматривается версия Ubuntu, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:

Причина: срок службы Ubuntu 12.04 истек 28 апреля 2017 г., и она больше не получает исправления или обновления для системы безопасности. Это руководство больше не поддерживается.

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

О виртуальных хостах

Виртуальные хосты используются для запуска нескольких веб-сайтов или доменов с одного сервера. Примечание. Согласно веб-сайту nginx, виртуальные хосты называются серверными блоками в nginx. Однако для удобства сравнения с apache в этом руководстве я буду называть их виртуальными хостами.

Настроить

Кроме того, на вашем VPS уже должен быть установлен nginx. Если это не так, вы можете скачать его с помощью этой команды:

Шаг первый: создайте новый каталог

Первым шагом в создании виртуального хоста является создание каталога, в котором мы будем хранить информацию о новом веб-сайте.

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

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

Шаг второй: предоставление разрешений

Нам нужно предоставить право собственности на каталог нужному пользователю, а не просто хранить его в корневой системе. Вы можете заменить "www-data" ниже на соответствующее имя пользователя.

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

Теперь вы закончили с разрешениями.

Шаг третий — создание страницы

Нам нужно создать новый файл с именем index.html в каталоге, который мы создали ранее.

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

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

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

nginx предоставляет нам макет для этого файла в каталоге, доступном для сайтов (/etc/nginx/sites-available), и нам просто нужно скопировать текст в новый пользовательский файл:

Шаг пятый. Настройка виртуальных хостов

Откройте новый файл виртуального хоста — вы увидите всю информацию, необходимую для настройки виртуального хоста.

Нам нужно внести пару изменений в эти несколько строк:

  • Раскомментируйте "listen 80", чтобы весь трафик, входящий через этот порт, направлялся на сайт.
  • Измените корневое расширение, чтобы оно соответствовало каталогу, созданному на первом этапе. Если корень документа указан неправильно или отсутствует, вы не сможете настроить виртуальный хост.
  • Измените имя сервера на доменное имя, одобренное DNS, или, если у вас его нет, вы можете использовать свой IP-адрес.

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

Последний шаг – активация хоста путем создания символической ссылки между каталогом, доступным для сайтов, и каталогом, в котором разрешены сайты. В apache для этого используется команда «a2ensite» — у nginx нет эквивалентного сочетания клавиш, но, тем не менее, это простая команда.

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

Шаг шестой — перезапустите nginx

Мы внесли множество изменений в конфигурацию. Перезапустите nginx и сделайте изменения видимыми.

Необязательный седьмой шаг — настройка локальных хостов

Если вы указали свое доменное имя на IP-адрес вашего сервера, вы можете пропустить этот шаг — вам не нужно настраивать локальные хосты. Ваши виртуальные хосты должны работать. Однако, если вы хотите опробовать свои новые виртуальные хосты без необходимости подключения к реальному доменному имени, вы можете настроить локальные хосты только на своем компьютере. Для этого шага убедитесь, что вы находитесь на самом компьютере, а не на дроплете.

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

Если вы работаете на Mac или Linux, получите доступ к привилегированному пользователю ( su ) на компьютере и откройте файл hosts:

Если вы работаете на компьютере с Windows, вы можете найти инструкции по изменению хост-файла на сайте Microsoft

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

Шаг восьмой — РЕЗУЛЬТАТЫ: посмотрите на свой виртуальный хост в действии

Это должно выглядеть примерно так, как на моем удобном снимке экрана

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

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

Подробнее

После того как вы настроили виртуальные хосты, вы можете перейти к созданию сертификата SSL для своего сайта или установке FTP-сервера

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Вы можете разместить несколько веб-сайтов на одном сервере Ubuntu, настроив виртуальные веб-хосты с помощью Nginx.

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

В этом руководстве рассматривается, как настроить виртуальный веб-хост в Ubuntu с помощью веб-сервера Nginx. Nginx — это высокопроизводительный веб-сервер и обратный прокси-сервер.Он легкий, кроссплатформенный и с открытым исходным кодом.

Что такое виртуальный хост?

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

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

Если вы когда-либо использовали виртуальный хостинг, скорее всего, это виртуальный хост, который действует за кулисами.

Шаг 1. Установка сервера Nginx

Если у вас не установлен Nginx, вот как вы можете быстро установить его в Ubuntu с помощью APT.

Сначала обновите информацию о своем пакете относительно настроенных источников:

Затем установите Nginx следующим образом:

Тестирование Nginx

Запустите службу Nginx с помощью команды systemctl.

Шаг 2. Создание и настройка веб-сайта

По умолчанию веб-сайт, обслуживаемый Nginx, работает через порт 80 и хранится в каталоге /var/www/html.

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

Создайте каталог в каталоге /var/www/. Вы можете назвать его VirtualHost, но не стесняйтесь использовать любое значимое имя по вашему выбору. Для этого перейдите в каталог /var/www с помощью команды cd.

Далее создайте каталог веб-сайта следующим образом:

Создайте файл index.html в каталоге, используя следующие команды:

Откройте файл index.html в своем любимом текстовом редакторе и добавьте в него следующие строки кода:

Сохраните и закройте файл.

Шаг 3. Настройка виртуального хоста

Вы можете найти файлы конфигурации Nginx в каталоге /etc/nginx. Чтобы настроить виртуальный хост, сначала создайте файл конфигурации виртуального хоста для сайта в каталоге /etc/nginx/sites-enabled.

Мы назвали файл virtual_host, но вы можете использовать любое осмысленное имя по вашему выбору.

Откройте только что созданный файл, т. е. virtual_host, в своем любимом текстовом редакторе и вставьте в него следующие строки кода:

Сохраните и закройте файл.

Вот некоторые из важных конфигураций в объясненном файле:

Шаг 4. Обслуживание веб-сайта

Перезапустите сервер Nginx, чтобы сохранить внесенные изменения.

Вы можете проверить состояние сервера Nginx, выполнив:

Теперь у вас есть два веб-сайта на вашем сервере, один из которых работает через порт 81, а другой — через порт 80.

Создайте и разместите свой первый веб-сайт в Linux

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

Читайте также: