
Цель урока: Научиться настраивать Nginx для обслуживания нескольких независимых сайтов на одном сервере. Мы разберем концепцию виртуальных хостов (серверных блоков), создадим правильную структуру каталогов для двух тестовых сайтов и напишем для каждого из них безопасный и грамотный конфигурационный файл.
Часть 1: Теория. Как сервер понимает, какой сайт вам нужен?
Представьте, что ваш сервер с одним IP-адресом - это большой многоквартирный дом.
-
IP-адрес - это адрес дома.
-
Сайты (site1.com, site2.com) - это квартиры.
Когда вы вводите в браузере http://site1.com, ваш браузер отправляет HTTP-запрос на IP-адрес сервера, но внутри этого запроса он добавляет специальный заголовок - Host: site1.com.
Nginx (наш "консьерж") получает этот запрос, смотрит на заголовок Host и понимает, что посетитель хочет попасть в "квартиру" site1.com. Он находит в своей "книге учета" (конфигурационных файлах) блок, отвечающий за site1.com, и отдает посетителю файлы из нужной папки. Этот механизм и называется виртуальными хостами.
Часть 2: Практика. Подготовка структуры
Мы создадим два тестовых сайта: project-one.local и project-two.local.
Шаг 1: Создание структуры каталогов на сервере
mkdir -p /var/www/project-one.local/html
mkdir -p /var/www/project-two.local/html
Шаг 2: Создание тестовых страниц с правильной кодировкой
Создадим для каждого сайта свою index.html. Обратите внимание на строку <meta charset="UTF-8"> - она гарантирует, что кириллица в браузере будет отображаться корректно.
-
Для первого сайта:
cat > /var/www/project-one.local/html/index.html <<EOF <!DOCTYPE html> <html> <head> <title>Проект Один</title> <meta charset="UTF-8"> </head> <body><h1>Добро пожаловать на Project One!</h1></body> </html> EOF -
Для второго сайта:
cat > /var/www/project-two.local/html/index.html <<EOF <!DOCTYPE html> <html> <head> <title>Проект Два</title> <meta charset="UTF-8"> </head> <body><h1>Вы находитесь на сайте Project Two!</h1></body> </html> EOF
Шаг 3: Настройка файла hosts (на вашем локальном компьютере!)
Это временный трюк для тестирования. В реальной жизни для этого используется публичный DNS. Откройте файл hosts на вашем компьютере с правами администратора и добавьте две строки:
ВАШ_IP_АДРЕС_СЕРВЕРА project-one.local
ВАШ_IP_АДРЕС_СЕРВЕРА project-two.local
-
На Windows: C:\Windows\System32\drivers\etc\hosts (открыть Блокнот от имени Администратора).
-
На macOS/Linux: sudo nano /etc/hosts.
Часть 3: Практика. Создание конфигурационных файлов Nginx
Теперь создадим "правила для консьержа" в каталоге /etc/nginx/sites-available/.
Шаг 1: Создание конфига для project-one.local
nano /etc/nginx/sites-available/project-one.local
Вставьте в редактор следующий код:
server {
listen 80;
# Эта строка для IPv6. Если IPv6 на вашем сервере не настроен,
# и nginx -t выдает ошибку, ее можно безопасно удалить.
listen [::]:80;
root /var/www/project-one.local/html;
index index.html;
server_name project-one.local www.project-one.local;
location / {
try_files $uri $uri/ =404;
}
}
Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X).
Шаг 2: Создание конфига для project-two.local
Хорошая практика: сначала копируем готовый конфиг, а потом редактируем.
cp /etc/nginx/sites-available/project-one.local /etc/nginx/sites-available/project-two.local
nano /etc/nginx/sites-available/project-two.local
Внутри nano измените только две строки: root и server_name, чтобы они соответствовали project-two.local.
Часть 4: Практика. "Включение" сайтов и перезагрузка Nginx
Шаг 1: Создание симлинков
"Включаем" наши сайты, создавая символические ссылки.
ln -s /etc/nginx/sites-available/project-one.local /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/project-two.local /etc/nginx/sites-enabled/
Шаг 2: Удаление дефолтного сайта
Чтобы дефолтный сайт Nginx не конфликтовал с нашими, удалим его симлинк.
rm /etc/nginx/sites-enabled/default
Внимание: Эта команда удаляет только ссылку, а не сам файл. Оригинальный конфиг /etc/nginx/sites-available/default остается нетронутым.
Шаг 3: Проверка конфигурации и перезагрузка
Всегда проверяйте синтаксис перед перезагрузкой!
nginx -t
Если вы видите ...test is successful, все в порядке. Только после этого применяем конфигурацию:
systemctl reload nginx
Часть 5: Финальная проверка и что делать, если не работает
Откройте браузер на вашем локальном компьютере.
-
Перейдите по адресу http://project-one.local. Вы должны увидеть приветствие от Project One.
-
Перейдите по адресу http://project-two.local. Вы должны увидеть приветствие от Project Two.
Если страница не открывается или открывается старая:
-
Проверьте файл hosts: Убедитесь, что вы правильно ввели IP-адрес вашего сервера и сохранили файл.
-
Очистите кэш DNS на вашем компьютере. Часто операционная система "помнит" старые записи.
-
Windows: ipconfig /flushdns (в командной строке от Администратора).
-
macOS: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
-
Linux (Ubuntu): sudo systemd-resolve --flush-caches
-
-
Проверьте статус Nginx на сервере: systemctl status nginx. Убедитесь, что он active (running).
Часть 6: Заключение
Сегодня вы освоили одну из самых фундаментальных задач веб-администрирования - настройку виртуальных хостов. Вы научились:
-
Понимать, как Nginx с помощью директивы server_name различает сайты.
-
Создавать правильную и изолированную структуру каталогов для каждого сайта.
-
Писать базовые, но полнофункциональные конфигурационные файлы.
-
Использовать механизм sites-available / sites-enabled для удобного включения и выключения сайтов.
-
Безопасно применять конфигурацию, всегда используя nginx -t перед reload.
На следующем, 43-м уроке, мы изучим еще одну мощнейшую роль Nginx. Мы научимся настраивать его как обратный прокси (Reverse Proxy). Это позволит Nginx выступать "фасадом" для других приложений, работающих на вашем сервере, повышая их безопасность и производительность.
Перейти к просмотру - УРОК №43.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

