Как настроить виртуальные хосты в Nginx на Ubuntu ⋆ ALexHost SRL

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills
11.02.2025

Как настроить виртуальные хосты в 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 использует символические ссылки для включения виртуальных хостов. Соедините файлы конфигурации с sites-available и sites-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 отличным выбором для размещения нескольких сайтов на одном сервере.

Проверьте свои навыки на всех наших услугах хостинга и получите скидку 15%!.

Используйте код при регистрации:

Skills