Налаштування віртуальних хостів у Nginx на Ubuntu
Вимоги
Працюватимемо під обліковим записом звичайного користувача з sudo правами. Також вам знадобиться встановлений веб-сервер Nginx. За бажання можна встановити повністю LEMP (Linux, Nginx, MySQL та PHP). Щоб встановити Nginx, достатньо виконати наступну команду:
Крок 1 - налаштування нової кореневої директорії
Але так як ми прості користувачі, і з питаннями зберігання пакетів рідко стикаємося, проігноруємо цю політику і встановимо цей каталог як кореневий. Точніше кажучи, кожен каталог усередині кореневої директорії має відповідати окремому сайту. А всі файли сайту розмістимо в директорії /var/www/site_name/html. Спочатку створимо всі необхідні підкаталоги. Для цього виконаємо таку команду:
Права на кореневий каталог повинні бути налаштовані коректно якщо ви не виправляли значення umask , але про всяк випадок виправимо:
Ми повністю підготували структуру нашого сервера, можемо рухатися далі.
Крок 2 – Створюємо шаблон сторінки для кожного сайту
Давайте створимо сторінку, яка відображатиметься за замовчуванням під час створення нового сайту. Створіть файл index.html у каталозі першого домену:
Внесемо до нього невеликі зміни:
Збережіть та закрийте цей файл. Тепер ми будемо бачити, чи правильно налаштовані наші сайти.
Крок 3 - створення файлів віртуальних хостів для кожного домену
Тепер у нас є вміст для кожного сайту, настав час створитивіртуальний хости (точніше в Nginx вони називаються server block, але ми будемо користуватися терміном віртуальний хост). За замовчуванням, Nginx використовує один віртуальний хост під назвоюdefault. Використовуємо його як шаблон для нашоїконфігурації. Спочатку пропрацюємо налаштування для першого домену, яке потім просто скопіюємо та внесемо мінімальні зміни для другого домену.
Створення першого файлу віртуального хоста
Як я вже сказав, скопіюємо файл налаштуванняdefault :
Відкриємо цей файл із правами адміністратора:
Для початку розберемося з директивою listen. Тільки одному блоку server ми можемо встановити значення default_server. Блок з таким значенням буде обслуговувати запити, якщо не знайдено відповідного блоку (блок - це все що знаходиться в server). Ми відключимо цю директиву у віртуальному хості default для використання default_server на одному з наших доменів. Я залишу цю функцію активованою для першого домену, але за бажання ви можете її перенести на другий.
Наступне що ми зробимо-налаштуємо кореневий каталог за допомогою директиви root. Вона має вказувати на каталог, де лежать усі документи вашого сайту:
Нотатка : кожна інструкція Nginx повинна закінчуватися символом “;”.
Далі налаштуємо server_name , ця директива повинна відповідати першому доменному імені. Додамо також псевдонім:
Остаточне налаштування має виглядати так:
На цьому базове налаштування закінчено. Збережіть та закрийте файл.
Створення другого віртуального хоста
Для цього просто скопіюємо файл налаштувань для першого сайту:
Відкрийте цей файл із правами адміністратора
Встановіть кореневий каталог для другого сайту:
Тепер вкажемо 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 (додатково)
Зверніть увагу, що ці зміни слід проводити лише на локальній машині, а не на сервері VPS. Вам знадобляться root права, також потрібно мати право змінювати системні файли.
Якщо ви використовуєте Mac або Linux систему, виправлення можна внести таким чином:
Таким чином, ми перехопимо всі запити до цих доменних імен і перенаправимо їх на наш сервер. Збережіть та закрийте файл, коли закінчите.
Крок 6 - Перевірка
Висновок
Ви навчилися повністю настроювати віртуальні хости для кожного сайту на вашому сервері. По суті, не існує жодних обмежень накількість сайтів на одній машині, окрім ресурсів самої системи.