Як налаштувати віртуальні хости в Nginx на Ubuntu
Налаштування віртуальних хостів в Nginx дозволяє розміщувати кілька веб-сайтів на одному сервері, кожен з яких має власне доменне ім’я. Віртуальні хости Nginx налаштовуються за допомогою “серверних блоків”, які визначають налаштування для кожного веб-сайту. Цей посібник допоможе вам налаштувати віртуальні хости на сервері Ubuntu за допомогою Nginx.
1. Передумови
- Nginx встановлено: Переконайтеся, що Nginx встановлено на вашому сервері. Якщо ні, встановіть його за допомогою:
sudo apt update
sudo apt install nginx
- Доменні імена: Вкажіть доменні імена, які ви хочете розмістити, на IP-адресу вашого сервера. Ви можете змінити файл /etc/hosts для тестування.
2. Налаштування каталогів для кожного веб-сайту
Кожен веб-сайт повинен мати власний каталог для зберігання файлів веб-сайту. Давайте створимо каталоги для двох прикладів веб-сайтів example1.com і example2.com.
sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html
Надайте права власності на ці каталоги користувачеві Nginx (www-data), щоб переконатися, що Nginx має необхідні дозволи.
sudo chown -R www-data:www-data /var/www/example1.com/html
sudo chown -R www-data:www-data /var/www/example2.com/html
Встановіть відповідні дозволи:
sudo chmod -R 755 /var/www
3. Створення зразка вмісту
Щоб протестувати віртуальні хости, додайте зразки HTML-файлів для кожного сайту.
Example1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.html
Example2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html
4. Створення файлів конфігурації віртуального хоста
Тепер ми створимо файл конфігурації серверного блоку (віртуального хоста) для кожного сайту. Nginx зберігає ці конфігураційні файли в каталозі /etc/nginx/sites-available/.
Крок 1: Створення конфігурації для Example1.com
Створіть новий конфігураційний файл для example1.com:
sudo nano /etc/nginx/sites-available/example1.com
Додайте наступну конфігурацію:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Крок 2: Створення конфігурації для Example2.com
Створіть файл конфігурації для example2.com:
sudo nano /etc/nginx/sites-available/example2.com
Додайте наступну конфігурацію:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
5. Увімкніть віртуальні хости
Nginx використовує символічні посилання для ввімкнення віртуальних хостів. З’єднайте конфігураційні файли з сайтів-available до сайтів-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
6. Перевірте конфігурацію
Щоб переконатися, що у вашій конфігурації немає синтаксичних помилок, запустіть її:
sudo nginx -t
Якщо все правильно, ви побачите повідомлення з підтвердженням. Якщо є помилки, Nginx покаже деталі, які допоможуть вам усунути їх.
7. Перезапуск Nginx
Після підтвердження конфігурації перезапустіть Nginx, щоб застосувати зміни:
sudo systemctl restart nginx
8. Доступ до веб-сайтів
Якщо доменні імена вказують на ваш сервер, ви зможете отримати доступ до кожного сайту, відвідавши його:
- http://example1.com
- http://example2.com
Для локального тестування ви можете відредагувати файл /etc/hosts, щоб прив’язати доменні імена до IP-адреси вашого сервера. Додайте записи на кшталт:
127.0.0.1 example1.com 127.0.0.1 example2.com
Збережіть і закрийте файл, а потім спробуйте зайти на сайти в браузері.
9. Увімкнення HTTPS для кожного сайту (необов’язково)
Для безпечного з’єднання ви можете налаштувати SSL-сертифікати за допомогою Let’s Encrypt. Щоб увімкнути HTTPS:
Встановіть certbot:
sudo apt install certbot python3-certbot-nginx
Запустіть наступну команду, щоб отримати і налаштувати SSL-сертифікати для кожного домену:
sudo certbot --nginx -d example1.com -d www.example1.com
sudo certbot --nginx -d example2.com -d www.example2.com
Дотримуйтесь підказок, і Certbot автоматично налаштує HTTPS у вашій конфігурації Nginx.
Висновок
Налаштувавши віртуальні хости в Nginx на Ubuntu, ви можете розмістити кілька веб-сайтів на одному сервері, кожен зі своєю конфігурацією і контентом. Таке налаштування є ефективним і масштабованим, що робить Nginx чудовим вибором для розміщення декількох сайтів на одному сервері.