Предпосылки
Следуйте этому руководству, чтобы установить Nginx в Ubuntu 18.04: Как установить Nginx в Ubuntu 18.04.
Конфигурация серверных блоков
По умолчанию Nginx Ubuntu имеет только один серверный блок. Он настроен на использование файлов в каталоге /var/www/html
.
Нам нужны дополнительные каталоги, если мы хотим создать больше сайтов.
Мы создаем структуру внутри /var/www
для каждого нашего сайта. Веб-контент будет помещен в каталог html.
Из консоли:
sudo mkdir -p /var/www/esempio.com/html
sudo mkdir -p /var/www/test.com/html
Мы можем использовать переменную $USER
, чтобы назначить необходимые разрешения для учетной записи, в которую мы в данный момент вошли (убедитесь, что вы не вошли в систему как root). Это позволит нам легко создавать или изменять содержимое в этом каталоге:
sudo chown -R $USER:$USER /var/www/esempio.com/html
sudo chown -R $USER:$USER /var/www/test.com/html
Давайте удостоверимся, что разрешения верны:
sudo chmod -R 755 /var/www
Пример создания страницы
Создадим файл index.html для первого домена:
nano /var/www/esempio.com/html/index.html
Давайте вставим следующий пример кода:
<html>
<head>
<title>Benvenuto, esempio.com</title>
</head>
<body>
<h1>Il dominio esempio.com è funzionante!</h1>
</body>
</html>
Сохраните и закройте файл.
Давайте создадим вторую страницу примера, скопировав первую в другой корневой каталог.
sudo cp /var/www/esempio.com/html/index.html /var/www/test.com/html/
Откроем файл:
sudo nano /var/www/test.com/html/index.html
Отредактируем файл:
<html>
<head>
<title>Benvenuto, test.com</title>
</head>
<body>
<h1>Il dominio test.com è funzionante!</h1>
</body>
</html>
Сохраните и закройте файл.
Создайте новый блок сервера для Nginx
Как упоминалось ранее, Nginx по умолчанию использует только один блок Server. Итак, давайте скопируем существующий, а затем отредактируем его:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/esempio.com
Откройте файл:
sudo nano /etc/nginx/sites-available/esempio.com
Удалите опцию default_server, так как только блок Server может использовать эту опцию.
server {
listen 80 default_server;
listen [::]:80 default_server;...
}
Затем измените так:
server {
listen 80;
listen [::]:80;...
}
Также измените основной корень /var/www/example.com/html ; Результат будет таким:
server {
listen 80;
listen [::]:80;
root /var/www/esempio.com/html;
index index.html index.htm index.nginx-debian.html;
server_name esempio.com www.esempio.com;
location /{
try_files $uri $uri/=404;
}
}
Создайте второй блок сервера
Копируем созданный ранее файл и меняем необходимые параметры:
sudo cp /etc/nginx/sites-available/esempio.com /etc/nginx/sites-available/test.com
Откройте файл:
sudo nano /etc/nginx/sites-available/test.com
Измените это следующим образом:
server {
listen 80;
listen [::]:80;
root /var/www/test.com/html;
index index.html index.htm index.nginx-debian.html;
server_name test.com www.test.com;
location /{
try_files $uri $uri/=404;
}
}
Включить серверные блоки
Мы включаем новые серверные блоки, создавая символические ссылки на каталог с поддержкой сайтов, которые Nginx использует на этапе запуска.
sudo ln -s /etc/nginx/sites-available/esempio.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Чтобы избежать проблем с памятью из-за добавления новых серверных блоков, мы модифицируем параметр внутри nginx.conf.
sudo nano /etc/nginx/nginx.conf
Найдите и раскомментируйте следующий параметр, удалив символ # перед параметром server_names_hash_bucket_size.
http {...
server_names_hash_bucket_size 64;...
}
Проверим правильность настроек:
sudo nginx -t
Если вы не столкнулись с какими-либо проблемами, перезапустите nginx:
sudo systemctl restart nginx
Отредактируйте локальный файл hosts для теста (необязательно)
Если вы не использовали свои собственные доменные имена и вместо этого использовали фиктивные значения, вы можете изменить конфигурацию своего локального компьютера, чтобы вы могли временно протестировать конфигурацию вновь настроенных серверных блоков Nginx.
Это не позволит другим посетителям правильно просматривать ваш сайт, но даст вам возможность самостоятельно заходить на сайты и проверять настройки. Примечание Убедитесь, что во время этих шагов вы работаете на своем локальном компьютере, а не на своем VPS-сервере. Вам нужно будет иметь root-доступ, быть членом административной группы или иным образом иметь возможность изменять системные файлы для этого.
Откройте файл hosts:
sudo nano /etc/hosts
Вам нужно знать общедоступный IP-адрес сервера и домены, которые вы хотите указать на сервер. Предполагая, что общедоступный IP-адрес, например, 11.11.11.11, отредактируйте файл следующим образом:
127.0.0.1 localhost...
11.11.11.11 esempio.com www.esempio.com
11.11.11.11 test.com www.test.com
Тест
Теперь, когда все готово, нам нужно проверить правильность работы серверных блоков. Вы можете сделать это, посетив домены в своем браузере:
http://esempio.com
http://test.com
Если оба этих сайта работают, вы успешно настроили два независимых блока серверов с Nginx.
Если вы редактировали файл hosts на своем локальном компьютере для проверки вновь созданных сайтов, вы можете просто удалить последние добавленные строки, чтобы восстановить его.
Вывод
В этом руководстве мы увидели, как создавать виртуальные хосты (серверные блоки) для связывания разных доменов с одной и той же установкой Nginx, чтобы иметь возможность обслуживать разные сайты с разными доменами на одном сервере с Ubuntu 18.04 LTS.