- Настройка виртуальных хостов Nginx
- Настройка корневой системы для сайтов
- Права на html
- Создание простой html страницы для сайта
- Настройка виртуальных хостов Nginx в Ubuntu
- Требования
- 1: Каталоги Document Root
- 2: Создание страниц для сайтов
- Success! The example.com server block is working!
- Начало работы с NGINX
- Привязка доменов к дерикториям
- Направить ip сервера на папку
- Склейка доменов в NGINX
- Присвоить права текущему пользователю на каталог
- Nginx как настроить домен
- Шаг 1 — настройка новой корневой директории
- Шаг 2 — Создаём шаблон страницы для каждого сайта
- Шаг 3 — создание файлов виртуальных хостов для каждого домена
- Создание первого файла виртуального хоста
- Создание второго виртуального хоста
- Шаг 4 — активация виртуальных хостов и перезапуск Nginx
- Шаг 5 — Настройка локального файла hosts (дополнительно)
- Шаг 6 — Проверка
- Заключение
Настройка виртуальных хостов 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
Целью данной заметки стало обобщить полученную из многочисленных источников информацию о том как начать работу с nginx. Что-ж попытаемся сделать наши первые шаги и не свалить сервер =)
Давайте сразу без прилюдий установим NIGINX в вашу убунту. Поочерёдно выполняем следующие команды в терминале:
После этих простых действий на вашем ip или основном домене появится приветствие от nginx. Поздравляю, вы это сделали, ваш сервер получил самую быструю и современную версию веб сервера.
По умолчанию у нас есть всего один хост (сайт) и он лежит в папке: /usr/share/nginx/html. Если у вас будет всего один сайт на сервере, то на этом можно закончить настройку виртуального сервера. Далее вам просто необходимо будет залить все необходимые фалы в данную дерикторию и наслаждаться жизнью.
Привязка доменов к дерикториям
Для тех же, кто не готов ограничится одним только доменом и хочет захостить на своём сервере несколько сайтов приглашаю продолжить ковыряться в nginx.
Давайте для начала создадим папки для будущих сайтов, например для site1.com и site2.com
В большинстве систем принято размещать все сайты в директории /var/www/ вы можете следовать этой логике. Разница с моим примером будет только в вписании этого пути в конфиги.
Я же, переодически работая с node.js в терминале моего мака привык, что проекты хранятся в домашней директории моего юзера в папке projects, в нашем случае ради семантичности — буду использовать директорию www. Плюсом такого подхода будет то, что создав в системе юзера и заходя под ним на ftp вы по умолчанию попадаете в его домашнюю директорию, где нас и будет поджидать та самая папочка www со всеми нашими сайтами.
И так приступим, создаём папки сайтов:
Флаг -р ставим для того, что бы создавалась иерархия каталогов по указанному пути.
Теперь давайте зададим правильные права на корневой каталог следующей командой:
Теперь давайте расскажем nginx’у что вы создали новый хост и привяжем к данному хосту домен. Сделаем мы это на примере стандартного хоста, для начала просто скопируем его и в имя вставим ваш домен:
Где user это имя вашего юзера у меня это ubuntu созданный амазоном по умолчанию.
Далее внесём правки в этот документ с указанием расположения папки для этого домена.
Очищенный от комментов файл будет выглядеть следующим образом:
Обратите внимание, здесь не подключени ни php ни другие языки разработки, вы можете задать их как глобально для всех сайтов, так и вписывать здесь-же для каждого сайта отдельно. Таким образом один сайт может спокойно работать на новой версии php7 а другой ветеран на своём php5 или вообще на node.js
Конечную директорию я тоже не просто так изменил со стандартного html на public. Таким образом я заложил возможность в дальнейшем без бубна закинуть Laravel в корневую директорию сайта и быстро приступить к разработке без дополнительной настройки окружения.
Теперь создадим симлинк на новый виртуальный хост:
Теперь давайте изменим лимит на длину доменов, если у вас подразумеваются длинные домены или домены третьего уровня, отредактируем файл:
Необходимо найти и раскоментировать следующую строку (если по умолчанию там 32, замените на 64):
Всё! Второй сайт делаем по точной аналогии. Затем перезагружаем nginx.
Далее я буду пополнять заметку интересными настройками и командами для nginx. Заметка будет обновляться по мере появления новых задач в моей практике.
Направить ip сервера на папку
Если вы не хотите что бы при вводе IP адреса открывался какой либо из сайтов, вы можете отправить IP на заглушку.
Склейка доменов в NGINX
Этот простой код склеивает ваши домены переадресуя весь трафик на домен без WWW
Присвоить права текущему пользователю на каталог
Иногда некий системный каталог нужно дать на запись вашему пользователю, проще говоря передать ему в собственность. Выполняется простой командой:
Источник
Nginx как настроить домен
Будем работать под учетной записью обычного пользователя с sudo правами. Так же вам понадобится установленный веб-сервер Nginx. При желании можно установить полностью LEMP (Linux, Nginx, MySQL и PHP). Чтобы установить Nginx достаточно выполнить следующую команду:
Прежде чем продолжить читать статью, настоятельно рекомендуем выполнить вышеописанные условия. Для примера, мы настроим два домена на нашем сервере. Их имена — example.com, test.com. Если в наличии у вас нет двух свободных имен, то просто придумайте два, а позднее мы покажем как настроить ваш локальный сервер, чтобы проверить их работоспособность.
Шаг 1 — настройка новой корневой директории
По-умолчанию на вашем Nginx сервере активирован только один виртуальный хост. Он работает с документами по адресу: /usr/share/nginx/html . Мы изменим эту настройку, так как чаще всего приходится работать с каталогом /var/www . Nginx не использует эту директорию по-умолчанию, так как это противоречит политике Debian по использованию пакетов в каталоге /var/www .
Но так как мы простые пользователи, и с вопросами хранения пакетов редко сталкиваемся, проигнорируем эту политику и установим этот каталог в качестве корневого. Точнее говоря, каждый каталог внутри корневой директории должен соответствовать отдельному сайту. А все файлы сайта разместим в директории /var/www/site_name/html . Сначала создадим все необходимые подкаталоги. Для этого выполним следующую команду:
Флаг -р указывает оболочке, чтобы она создавала новые каталоги если их не существует в указанном пути. Теперь передадим права на этот каталог обычному пользователю. Воспользуемся переменной окружения $USER , чтобы не вводить имя своего аккаунта. После этих действий мы сможем создавать в каталоге /var/www/ файлы, а посетители сайта — нет.
Права на корневой каталог должны быть настроены корректно если вы не исправляли значение umask , но на всякий случай поправим:
Мы полностью подготовили структуру для нашего сервера, можем двигаться дальше.
Шаг 2 — Создаём шаблон страницы для каждого сайта
Давайте создадим страницу, которая будет отображаться по-умолчанию при создании нового сайта. Создайте файл index.html в каталоге первого домена:
Внутри сделаем минимальное наполнение, чтобы понимать на каком сайте мы находимся. Вот примерное содержание:
Сохраните и закройте файл. Так как второй файл будет с похожим содержанием, просто скопируем его:
Внесём в него небольшие изменения:
Сохраните и закройте этот файл. Теперь мы будем видеть правильно ли настроены наши сайты.
Шаг 3 — создание файлов виртуальных хостов для каждого домена
Теперь у нас есть содержимое для каждого сайта, настало время создать виртуальный хосты (точнее в Nginx они называются server block, но мы будет пользоваться термином виртуальный хост). По-умолчанию, Nginx использует один виртуальный хост под названием default. Используем его в качестве шаблона для нашей конфигурации. Сначала проработаем настройку для первого домена, которую потом просто скопируем и внесем минимальные изменения для второго домена.
Создание первого файла виртуального хоста
Как я уже сказал, скопируем файл настройки default:
Откроем этот файл с правами администратора:
Если опустить комментарии, то файл должен выглядеть следующим образом:
Для начала разберемся с директивой listen . Только одному блоку server мы можем установить значение default_server . Блок с таким значением будет обслуживать запросы, если не было найдено подходящего блока (блок — это всё что находится в server). Мы отключим эту директиву в виртуальном хосте default , чтобы использовать default_server на одном из наших доменов. Я оставлю эту функцию активированной для первого домена, но при желании вы можете её перенести на второй.
Следующее что мы сделаем — настроим корневой каталог при помощи директивы root . Она должна указывать на каталог, где лежат все документы вашего сайта:
Заметка: каждая инструкция Nginx должна заканчиваться символом “;”.
Далее настроим server_name , эта директива должна соответствовать первому доменному имени. Добавим также псевдоним:
Окончательная настройка должна выглядеть следующим образом:
На этом базовая настройка окончена. Сохраните и закройте файл.
Создание второго виртуального хоста
Для этого просто скопируем файл настроек для первого сайта:
Откройте этот файл с правами администратора
В этом файле также начнем с директивы listen . Если опцию default_server вы оставили в первом файле, то здесь её следует удалить. Также необходимо убрать опцию ipv6only=on, так как её указывают только для одной комбинации адрес/порт:
Установите корневой каталог для второго сайта:
Теперь укажем server_name для второго домена:
Окончательная настройка должна выглядеть следующим образом:
Сохраните и закройте файл.
Шаг 4 — активация виртуальных хостов и перезапуск Nginx
Мы настроили наши виртуальные хосты, теперь настало время активировать их. Для этого надо создать символические ссылки на эти файлы и положить их в каталог sites-enabled , которые Nginx считывает при запуске. Создать ссылки можно следующей командой:
Теперь Nginx обработает эти файлы. Но виртуальный хост default , также активирован, поэтому мы получим конфликт параметра default_server . Отключить эту настройку можно просто удалив ссылку на файл. Сам файл останется в каталоге sites-available , так что при необходимости мы всегда сможем вернуть его на место.
Осталось ещё одна настройка, которую требуется выполнить в конфигурационном файле Nginx. Откройте его:
Надо снять комментарий с одной из строк:
Эта директива применяется когда задано большое число имён серверов, либо заданы необычно длинные имена. Например, если значение по умолчанию равно 32 и имя сервера задано как “too.long.server.name.example.org”, то nginx откажется запускаться и выдаст сообщение об ошибке:
Поэтому лучше увеличить это значение до 64. Теперь можно перезапустить веб сервер, чтобы изменения вступили в силу:
Ваш сервер теперь должен обрабатывать запросы к обоим доменам.
Шаг 5 — Настройка локального файла hosts (дополнительно)
Если вы использовали свои доменные имена, то необходимо настроить ваш локальный сервер, чтобы тот распознавал их и вы смогли бы проверить свои виртуальные хосты (будем прописывать свои доменные имена в локальный файл hosts). Конечно, интернет пользователи не смогут таким образом просматривать ваш сайт, но для проверки хостов этого будет достаточно. Таким образом мы перехватываем запрос, который должен быть отправлен DNS серверу. По идее мы указываем по какому ip адресу наш компьютер должен перейти при обращении к определенному доменному имени.
Обратите внимание, что эти изменения следует производить только на локальной машине, а не на VPS сервере. Вам понадобятся root права, также необходимо иметь право изменять системные файлы.
Если вы используете Mac или Linux систему, то исправления можно внести следующим образом:
Если же вы пользуетесь Windows, то инструкции по этой ОС вы найдете на официальном сайте производителя (или в google). Вам необходимо знать открытый IP адрес вашего сервера и доменные имена, которые вы хотите привязать к нему. Допустим мой адрес 111.111.111.111 , тогда мне надо добавить следующие строки в файл hosts :
Таким образом мы перехватим все запросы к этим доменным именам и перенаправим их на наш сервер. Сохраните и закройте файл когда закончите.
Шаг 6 — Проверка
На данном этапе вы должны получить полностью рабочую настройку. Осталось только её проверить. Для этого перейдем в браузере по адресу: http://example.com < :target="_blank" >. Если оба сайта отображаются корректно, то вас можно поздравить с полной настройкой сервера Nginx. На этом этапе, если вы вносили изменения в файл hosts , то их следует удалить т.к. проверка прошла успешно и они уже не нужны. Чтобы открыть доступ к сайтам для интернет пользователей, придется приобрести доменные имена.
Заключение
Вы научились полностью настраивать виртуальные хосты для каждого сайта на вашем сервере. По сути, не существует каких либо ограничений на количество сайтов на одной машине, кроме ресурсов самой системы.
Источник