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

Часть 1: Теория. Как сервер понимает, какой сайт вам нужен?

Представьте, что ваш сервер с одним IP-адресом - это большой многоквартирный дом.

  • IP-адрес - это адрес дома.

  • Сайты (site1.comsite2.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+OEnter) и выйдите (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: Финальная проверка и что делать, если не работает

Откройте браузер на вашем локальном компьютере.

  1. Перейдите по адресу http://project-one.local. Вы должны увидеть приветствие от Project One.

  2. Перейдите по адресу 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

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи считают это полезным (0 голосов)