- Настройка виртуальных хостов Nginx
- Настройка корневой системы для сайтов
- Права на html
- Создание простой html страницы для сайта
- Настройка виртуальных хостов Nginx в Ubuntu
- Требования
- 1: Каталоги Document Root
- 2: Создание страниц для сайтов
- Success! The example.com server block is working!
- Как в nginx создавать виртуальные хосты
- Виртуальный хост — это…
- Создание виртуального хоста
- Предустановка
- Создание директории сайта
- Права доступа
- Создание страницы
- Создание конфигурации виртуального хоста
- Конфигурация виртуального хоста
- Активация виртуального хоста
- Перезагрузка
- Настройка локальных хостов
- Результаты
- Заключение
- Настройка виртуальных хостов Nginx
- Настройка виртуального хоста Nginx
- 1. Синтаксис виртуального хоста
- 2. Виртуальный хост по умолчанию
- 2. Виртуальный хост с доменом
- 3. Отключение виртуального хоста
- Выводы
Настройка виртуальных хостов Nginx
После установки популярного веб-сервера nginx (Engine-X, «Энжин-кс»), необходимо настроить виртуальные хосты. С помощью них можно обслуживать нескольких сайтов на одном IP-адресе.
Виртуальный хост (virtual Host) — это конфигурационный файл, в котором описаны настройки одного веб-сайта (домена).
Предполагается, что веб-сервер уже установлен, при большом желании рекомендуется установить весь необходимый комплект Nginx, MySQL и PHP. Вместо Mysql можно использовать аналоги, например mariadb, однако в этой статье мы не будет касаться php и базы sql.
Для примера создадим два виртуальных хоста:
Настройка корневой системы для сайтов
Сделаем удобную корневую систему сайтов таким образом, что каждый каталог соответствует названию сайта.
И все файлы будут храниться в директории «/var/www/название домена/html».
Создадим каталоги для двух доменов: vseprolinux.ru; siteprimer.ru.
mkdir -p /var/www/vseprolinux.ru/html
mkdir -p /var/www/siteprimer.ru/html
Аргумент «-p» говорит, чтобы директории создавались в любом случаи, если даже их не существует.
Права на html
Передадим права на папку html обычному пользователю, таким образом, чтобы мы могли создавать новые элементы, а пользователи сайта — нет.
Для этого будем использовать переменную окружения «$USER», чтобы не вводить имя своего логина.
chown -R $USER:$USER /var/www/vseprolinux.ru/html
chown -R $USER:$USER /var/www/siteprimer.ru/html
Права на каталог www.
chmod -R 755 /var/www
Создание простой html страницы для сайта
Создадим файл index.html для сайта vseprolinux.ru. Поместим его в рабочей каталог.
Отредактируем его, с минимальным html контентом.
Источник
Настройка виртуальных хостов Nginx в Ubuntu
Виртуальные хосты в Nginx также называются блоками server. Эти блоки используются для обслуживания нескольких индивидуальных доменов на одном сервере.
Данное руководство покажет, как настроить виртуальные хосты Nginx на сервере Ubuntu 16.04.
Требования
- Не-root пользователь с доступом sudo (о настройке такого пользователя – в этой статье).
- Предварительно установленный веб-сервер Nginx. Инструкции по установке Nginx можно найти здесь. Чтобы установить более надёжную платформу для веб-сервера, читайте руководство «Установка стека LEMP в Ubuntu 16.04».
Кроме того, для выполнения предложенных в руководстве примеров нужно иметь два доменных имени; в руководстве используются условные домены example.com и test.com. Не забудьте заменить их своими доменными именами.
Если у вас нет доменных имён, которые можно использовать для тестирования настроек, укажите фиктивные домены. В руководстве есть специальный раздел, объясняющий, как протестировать сайты при помощи локальной машины.
1: Каталоги Document Root
По умолчанию в Ubuntu 16.04 включен один стандартный виртуальный хост Nginx, который обслуживает документы из каталога /var/www/html.
Для обслуживания нескольких сайтов нужно создать дополнительные каталоги. Каталог /var/www/html будет использоваться в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует ни одному из других сайтов.
Создайте структуру каталогов в /var/www для каждого отдельного сайта. Весть текущий контент нужно поместить в каталог html. Используйте следующую команду; флаг –p создаст все необходимые родительские каталоги.
sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/test.com/html
Создав все необходимые каталоги, передайте права на них текущему пользователю с доступом к sudo.
Примечание: В зависимости от требований сервера вам может потребоваться повторно настроить права доступа или права собственности на папки, чтобы разрешить доступ к пользователю www-data. В этом, как правило, часто нуждаются динамические сайты. Конечно, привилегии доступа полностью зависят от конфигурации сервера.
Используйте переменную окружения $USER, чтобы задать текущего пользователя. Это позволит создавать файлы в этих каталогах.
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/test.com/html
Теперь права на эти каталоги установлены верно, если ранее значение umask не было изменено. Это можно проверить при помощи команды:
sudo chmod -R 755 /var/www
2: Создание страниц для сайтов
Создав необходимую структуру каталогов, можно переходить к созданию стандартных страниц сайтов, чтобы иметь возможность просмотреть добавленный контент.
Создайте страницу index.html для первого сайта.
В этот файл вставьте следующий код; эта простая базовая страница сообщит, какой из двух сайтов открыт.
Success! The example.com server block is working!
Источник
Как в nginx создавать виртуальные хосты
Привет! Сегодня мы поговорим о таком нужном понятии, как виртуальные хосты (Virtual Hosts) в web-сервере nginx. В качестве примера мы будем использовать операционную систему Ubuntu. Для других Linux-систем настройка будет выглядеть очень похоже. Эта статья-инструкция будет интересна, в основном, начинающим web-мастерам и администраторам, т.к. у них чаще всего возникает данный вопрос.
Виртуальный хост — это…
Для начала давайте дадим определение виртуальному хосту. Итак, виртуальный хост — это разделение адресного пространства web-сервера, например, по имени сайта, позволяющее запускать несколько web-сайтов/приложений на одном физическом сервере. Если говорить в терминологии документации nginx, виртуальный хост также называется «Server Block», но для большего сходства с Apache я буду называть его единообразно, т.к. назначение у них одно и то же. И ещё одно соглашение — давайте то, что мы будем настраивать, для простоты называть сайтом.
Создание виртуального хоста
Многие команды в этой инструкции требуют наличия у вашего пользователя прав sudoer’а на VPS. Поэтому, если у вас их нет, настроить виртуальные хосты у вас, к сожалению, вряд ли получится.
Предустановка
Сейчас я скажу вещь, которую необходимо знать каждому! Для того, чтоб настроить виртуальный хост в nginx, вам нужен установленный на вашей машине wеb-сервер nginx. Капитан Очевидность с нами! Если nginx у вас уже установлен, можете смело пропускать этот шаг и двигаться дальше по инструкции. Если же его у вас по каким-то причинам на машине всё ещё нет, введите в консоли команду:
Опцию «-y» команде apt-get мы добавляем для того, чтоб не отвечать да-да-да на назойливые вопросы установщика, ведь мы уверены, что хотим поставить этот пакет и согласны с использованием занимаемого им места на диске. Если вы всё-таки не уверены, что со всем согласны, то не добавляйте эту опцию.
Создание директории сайта
Итак, прежде чем создавать виртуальный хост, давайте сделаем папку сайта, где разместим все файлики, с которыми будет работать наш web-сервер.
Путь к этой папке в конфигурации создаваемого хоста будет Document Root, своего рода контекстом, точкой изоляции, выше которой снаружи без предварительной настройки конфигурации подняться нельзя и относительно которой строятся пути до запрашиваемых файлов. С опцией «-p» у команды mkdir мы можем не заботиться о создании родительских директорий, они будут созданы автоматически:
Здесь мы используем реальный подтверждённый DNS домен с корректными записями, указывающими на нашу машину. Для создания виртуального хоста с незарегистрированным доменом, например, для локальной разработки, вам необходимо внести соответствующую запись в файле /etc/hosts. Подробнее об этом будет в конце статьи.
Права доступа
Сейчас права у нашей созданной папки есть только у root-пользователя. Мы должны дать права на директорию для нужного пользователя, чтоб не работать с ней постоянно в режиме супер-пользователя. Вы можете заменить пользователя «www-data», используемого ниже, на другого, но по умолчанию nginx работает от имени именно этого пользователя.
Теперь сделаем так, чтобы все пользователи могли читать наши новые файлы:
Мы подразумеваем, что работаем с VPS, на котором все пользователи ничего плохого не затевают или на котором есть только вы. Поэтому мы можем дать права 755 на папку /var/www. Если в вашем случае нельзя выдавать всем пользователям системы права на чтение этой директории, изучите вопрос с разграничением прав и настройте самостоятельно.
Теперь у вас всё с правами готово!
Создание страницы
Теперь нам необходимо разместить в нашей папке какие-нибудь статические файлы (HTML-страницы, картинки, скрипты, стили и т.д.), которые наш сервер будет раздавать. Давайте создадим HTML-страницу index.htm, которая будет на нашем сайте главной:
И добавим в него немного разметки, которая будет показываться пользователю:
Сохраняем и выходим.
Создание конфигурации виртуального хоста
Мы подошли к созданию файла конфигурации нашего нового виртуального хоста, который будет содержать всю необходимую для веб-сервера информацию о сайте.
В nginx в директории /etc/nginx/sites-available есть шаблон для создаваемых конфигураций. Давайте скопируем его для нашего сайта:
Конфигурация виртуального хоста
Откройте новый файл конфигурации и вы увидите всю необходимую информацию, которую вам следует заполнить.
Нам нужно внести изменения в текущую конфигурацию. В результате для нашего простого случая должно получиться примерно следующее:
От вас здесь требуется правильно указать путь к папке со статикой сайта и имя сервера, по которому вы будете обращаться к своему сайту. Если путь вы укажете неверно или не укажете вовсе, то вы не сможете настроить виртуальный хост. В качестве server_name вы также можете задать IP-адрес или несколько имён через пробел, по которым будет доступен хост, как мы и сделали.
Всё, с этим файлом мы закончили. Сохраняйте его и закрывайте.
Активация виртуального хоста
В nginx есть папки sites-available и sites-enabled. В первой хранятся конфигурации ВСЕХ виртуальных хостов, которые могут быть на данном сервере, а в директории sites-enabled символические ссылки на активные. Никто не запрещает в sites-enabled размещать оригинал файла конфигурации, а не ссылку, но это будет менее удобно, т.к. в случае необходимости отключения придётся либо удалять файл (тогда будет проблематично включить обратно), либо перемещать его в другую директорию (тогда мы должны помнить, куда мы перенесли). Гораздо проще грохнуть символическую ссылку!
Поэтому, теперь, чтоб активировать наш виртуальный хост, нам нужно создать символическую ссылку между директорией sites-available, где лежит наш файл конфигурации, и sites-enabled. В Apache для этого есть специальная команда a2ensite. В nginx такой команды нет, поэтому выполним следующее:
Чтобы избежать «conflicting server name error» и быть уверенным, что ваш сайт отдаёт нужную информацию, можно из числа активных хостов удалить дефолтный:
Перезагрузка
Мы уже прошли немало шагов и практически всё настроили. Давайте теперь перезагрузим наш веб-сервер, чтоб он применил новую конфигурацию, но перед этим хорошей практикой является проверка того, что всё с конфигурацией корректно и nginx её верно понимает. Для этого нужно запустить диагностику nginx следующей командой:
Такая проверка крайне необходима при конфигурации на production-серверах, чтоб не получилось так, что мы вызвали команду перезапуска nginx, а он из-за неверной конфигурации не смог запуститься, и все наши виртуальные хосты не отвечают.
Если в ответ вы получили примерно следующее:
То всё у вас хорошо и вы можете смело перезапускать сервер командой:
В противном случае вам надо посмотреть файл конфигурации хоста. Что-то вы там не так указали.
Настройка локальных хостов
Если вы указали в качестве server name IP-адрес, вы можете пропустить этот шаг, т.к. настройка локального хоста вам не нужен, ваш виртуальный хост будет работать и без него. Но, если вы хотите работать с вашим виртуальным хостом без реального доменного имени, вы можете настроить локальные хосты на вашей машине. Как я уже говорил выше, это очень удобно, например, при разработке. Я могу создать mysite.dev, и на нём будет крутиться локальная нестабильная версия сайта. Для MacOS и Linux-систем надо выполнить следующую команду:
Если вы работаете под Windows, то файл с локальных хостов должен лежать примерно по этому пути C:\Windows\System32\drivers\etc\hosts.
Добавляем запись о новом локальном хосте в файл. В нашем случае нужно добавить две записи, т.к. в server_name мы указали два домена.
Теперь до тех пор, пока эта запись не будет удалена, обращения по адресу mysite.ru будут получать информацию о данном хосте из этого файлика и перенаправлять вас к вашему удаленному серверу. Если сервер развернут локально, нужно написать вместо «12.34.56.789» «127.0.0.1».
Хорошая практика — во избежание будущих проблем удалять записи хостов после того, как они выполнили свою задачу.
Результаты
Теперь мы можем посмотреть результаты наших трудов! Вводим в браузере адрес http://mysite.ru или http://www.mysite.ru и любуемся созданной нами главной страницей из index.htm. Оба адреса должны показывать нашу главную страницу. Вот и всё! Наш виртуальный хост прекрасно работает.
Если тебя заинтересовал вопрос более сложной настройки nginx, то можете почитать статью про синтаксис location в nginx с примерами.
Заключение
Спасибо, что дочитали статью до конца! Если тебе понравилась эта инструкция, не забудь поделиться ссылкой со всеми неравнодушными к данной теме, написать комментарий с отзывом и просто полистать другие статейки моего блога Если после выполнения инструкции у тебя что-то не получилось, пиши в комментариях, попробуем разобраться вместе.
Источник
Настройка виртуальных хостов Nginx
В одной из прошлых статей мы говорили о том, как выполняется установка и первоначальная настройка веб-сервера Nginx в CentOS 7. Этот веб-сервер завоевал огромную популярность благодаря высокой производительности и удачной архитектуре самой программы, из-за которой такая производительность и стала возможной.
Одна из основных возможностей веб-сервера — обслуживание нескольких сайтов на одном IP-адресе и в одной программе. Эта функция реализована с помощью виртуальных хостов. В этой статье мы разберём, как выполняется настройка виртуальных хостов в Nginx. Прежде чем читать статью дальше, я рекомендую просмотреть статью настройка Nginx, чтобы понять общий синтаксис конфигурационного файла.
Настройка виртуального хоста Nginx
Вообще, у Nginx только один конфигурационный файл — это /etc/nginx/nginx.conf. Все остальные файлы из папки /etc/nginx/* подключаются в этот файл с помощью директивы include. Поэтому теоретически все виртуальные хосты или только часть из них могут быть размещены в этом файле. Однако так делать не рекомендуется.
Для этого уже существует папка /etc/nginx/sites-available/ и /etc/nginx/sites-enabled. Первая просто содержит файлы конфигурации, в каждом из которых находится отдельный виртуальный хост. Вторая папка содержит ссылки на файлы из /etc/nginx/sites-available и подключена к основному конфигурационному файлу. Даже если в вашей системе пока такая структура не используется, я рекомендую её создать, чтобы в конфигурации всегда был порядок.
1. Синтаксис виртуального хоста
Каждый виртуальный хост представляет из себя такой блок кода:
server <
listen ip_адрес:порт;
server_name доменные_имена;
root /путь/к/файлам/сайта/;
index index.php index.html;
.
location / <>
.
>
Кроме того, здесь могут использоваться и другие инструкции, но эти основные и обязательные.
- listen — указывает на IP-адрес и порт, на котором программа будет ожидать соединения от этого сайта. Чтобы выбрать любой IP-адрес, можно указать звёздочку, а порт указывать обязательно. Также в этой строке можно добавить параметр default_server, тогда этот виртуальный хост будет использоваться по умолчанию;
- server_name — доменные имена, на которые будет отзываться этот хост. При отправке запроса на сервер, браузер указывает, к какому домену он обращается. Nginx анализирует этот параметр и выбирает необходимый виртуальный хост. Чтобы обрабатывать все домены, используйте символ подчеркивания _;
- root — путь к файлам сайта, которые будут открываться при запросе к этому виртуальному хосту. У Nginx должен быть доступ на чтение ко всем папкам по этому пути;
- index — файлы, которые будут открываться, если адрес файла не указан в URL;
- location — это набор правил обработки путей в url. Каждый location может содержит путь URL а внутри него можно настроить открытие другого файла, аутентификацию, запрос к другому серверу и другие подобные вещи. Nginx анализирует все location в конфигурационном файле и выбирает самое подходящее. Из этого правила есть одно исключение. Если несколько location содержат регулярные выражения, то для обработки будет выбран первый подходящий.
2. Виртуальный хост по умолчанию
Теперь разберём создание виртуальных хостов nginx на примере. Давайте создадим виртуальный хост, который будет обрабатывать все необработанные запросы:
sudo vi /etc/nginx/sites-available/000-default.conf
server <
listen *:80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.html index.htm;
location / <>
Все директивы, которые используются в блоке server, могут использоваться и в блоках location. Но нам не обязательно указывать root и index в каждом location. Если их опустить, то будут наследоваться те, которые были указаны в родительском блоке. Блоки server ведут себя аналогичным образом, поэтому, если мы не укажем другой путь к access.log, то будет использоваться путь, указанный в /etc/nginx/nginx.conf и так далее.
Теперь нам нужно активировать созданный виртуальный хост nginx. Для этого создайте символическую ссылку:
sudo ln -s /etc/nginx/sites-available/000-default.conf /etc/nginx/sites-enabled/000-default.conf
Затем убедитесь, что файлы из этого каталога подключены в основном конфигурационном файле:
sudo vi /etc/nginx/nginx.conf
Затем выполните эту команду, чтобы убедится, что вы не допустили ошибок:
Далее перечитайте конфигурацию nginx:
Теперь, если вы откроете IP-адрес сервера, то откроется созданный нами виртуальный хост.
2. Виртуальный хост с доменом
Аналогичным образом можно создать виртуальный хост для домена. Например example.ru:
sudo vi /etc/nginx/sites-available/example.conf
server <
listen *:80;
server_name example.ru;
root /usr/share/nginx/html;
index index.html index.htm;
location / <>
>
Если вы работаете на локальной машине и доступа к DNS выбранного домена у вас нет, то надо добавить его IP в файл /etc/hosts:
sudo vi /etc/hosts
Повторите процедуру активации домена, и затем в браузере при запросе к домену example.ru откроется стартовая страница Nginx. Если по каким-либо причинам виртуальный хост Nginx не работает, вы можете посмотреть полный скомпилированный файл nginx.conf:
Также можно проверить, есть ли в нём конфигурация нужного хоста, например, ищем упоминания example.ru:
nginx -T | grep example.ru
3. Отключение виртуального хоста
Благодаря структуре директорий, которую мы использовали, будет довольно просто отключить ненужный хост. Все наши виртуальные хосты Nginx находятся в папке /etc/nginx/sites-available, а в активной папке только ссылки на эти файлы. Поэтому для удаления достаточно удалить на него ссылку из папки /etc/nginx/sites-enabled/:
А затем, при необходимости, мы можем активировать его обратно, просто создав ссылку.
Выводы
В этой статье была рассмотрена настройка виртуальных хостов Nginx. Как видите, всё довольно просто и очень удобно, особенно, если вам нужно иметь несколько сайтов на одной машине. Конечно, у Nginx нет таких удобных утилит для активации сайтов, как в Apache, но работать вполне можно.
Источник