В этой инструкции мы рассмотрим настройку виртуальных хостов в Nginx для обслуживания нескольких веб-сайтов одновременно.
Все действия на сервере осуществляются через подключение по SSH.
Прежде чем приступить к настройке виртуальных хостов, необходимо настроить сервер.
Подготовка доменов
Ваши домены должны быть привязаны к облачному серверу. Сделать это вы можете по инструкции.
Обратите внимание
В инструкции приведены примеры с доменом mydomain.ru. В тех местах, где встречается этот домен, замените его своим доменным именем.
Установка Nginx
-
1
Обновите информацию о доступных пакетах с помощью команды
sudo apt-get update
. -
2
Обновите установленные пакеты, используя команду
sudo apt-get upgrade
. -
3
Установите Nginx:
sudo apt -y install nginx
-
4
После установки проверьте статус работы Nginx:
sudo systemctl status nginx
Если статус inactive (dead), запустите Nginx вручную с помощью команды sudo systemctl start nginx
Nginx автоматически запускается во время загрузки сервера.
Чтобы отключить автозапуск, введите:
sudo systemctl disable nginx
Чтобы возобновить автозапуск сервиса, введите:
sudo systemctl enable nginx
Настройка брандмауэра
По умолчанию брандмауэр закрывает все неразрешенные входящие подключения, поэтому для корректной работы Nginx необходимо открыть порты.
Чтобы открыть доступ для подключения к серверу по HTTP, выполните команды:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables-save
Если вы планируете использовать SSL-сертификат, для подключения по HTTPS выполните команду:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables-save
При переходе по IP-адресу вашего сервера откроется страница Nginx:
Настройка виртуальных хостов
Настройка директорий
Прежде чем создать виртуальный хост, нужно создать директорию для сайта, в которой будут размещены все необходимые файлы. По умолчанию в Ubuntu включен один виртуальный хост Nginx, который обслуживает документы из каталога /var/www/html. Чтобы добавить еще один домен, необходимо создать директорию в /var/www.
-
1
Создайте директорию для домена:
sudo mkdir -p /var/www/mydomain.ru/html
-
2
Назначьте права на директорию:
sudo chown -R www-data:www-data /var/www/mydomain.ru/html sudo chmod 755 /var/www/mydomain.ru
Cоздание тестовой страницы
-
1
Для проверки работы сервиса создайте индексный файл:
sudo nano /var/www/mydomain.ru/html/index.html
-
2
Заполните файл. Пример содержимого:
<html> <head> <title>Hello World</title> </head> <body> <h1>Success!</h1> </body> </html>
- 3 Сохраните изменения и закройте файл.
Настройка конфигурации
Теперь нужно создать файл конфигурации для виртуального хоста. Он будет содержать всю необходимую для веб-сервера информацию о сайте. В директории /etc/nginx/sites-available есть шаблон для создаваемых конфигураций.
-
1
Скопируйте файл конфигурации:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mydomain.ru
-
2
Откройте файл с помощью команды
sudo nano /etc/nginx/sites-available/mydomain.ru
-
3
В блоке server нужно изменить директиву root, указав путь к файлам сайта, и имя сервера. Пример содержания:
server { listen 80; listen [::]:80; root /var/www/mydomain.ru/html; index index.html index.htm index.nginx-debian.html; server_name mydomain.ru; location / { try_files $uri $uri/ =404; } }
В качестве server_name вы также можете задать IP-адрес или несколько имен через пробел, по которым будет доступен хост.
- 4 Сохраните изменения и закройте файл.
-
5
Чтобы активировать виртуальный хост, нужно создать символическую ссылку между директорией sites-available, где лежит созданный нами файл конфигурации, и sites-enabled, которая читается веб-сервером Nginx во время запуска.
Создайте символическую ссылку для домена:
sudo ln -s /etc/nginx/sites-available/mydomain.ru /etc/nginx/sites-enabled/mydomain.ru
-
6
Nginx использует хэш-таблицы, чтобы быстро обрабатывать статические данные. Если вы добавляете несколько имен серверов, заданного размера хэша может не хватить и при внесении изменений вы увидите ошибку
server_names_hash_bucket_size
Для ее предотвращения нужно внести изменения в файл конфигурации Nginx.Откройте конфигурационный файл Nginx:
sudo nano /etc/nginx/nginx.conf
-
7
Раскомментируйте строку:
server_names_hash_bucket_size 64;
Это увеличит размер хэш-таблиц имен серверов Nginx и позволит сервису обрабатывать все имена серверов.
- 8 Сохраните изменения и закройте файл.
-
9
Проверьте файл на наличие ошибок:
sudo nginx -t
Если все настроено корректно, в строке вывода будет следующее:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
-
10
Перезапустите Nginx:
sudo systemctl restart nginx
Готово, настройка виртуальных хостов завершена.
Проверка работы виртуальных хостов
Если с момента изменения DNS прошло менее 24 часов и домен еще не делегирован, для проверки работоспособности виртуальных хостов настройте файл hosts по инструкции.
Если вы заранее привязали домен к серверу и делегирование уже произошло, в адресной строке введите http://ваш_домен_или_ip. Если все настроено корректно, в браузере отобразится следующее:
Готово, файл index.html можно удалить. Далее вы можете загрузить файлы сайта в созданную директорию.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊