Nginx Server Blocks позволяют запускать более одного вебсайта на одной машине. Используя Server Blocks, можно указать главный сайт, создать различные условия и настройки, а так же использовать разные SSL сертификаты для каждого сайта отдельно.
В этой статье мы научимся настраивать Nginx server blocks в Ubuntu.
Предусловия
Перед тем как приступить, убедитесь что все условия соблюдены:
1. Ваш домен указывает на публичный IP вашего сервера;
2. Установлен nginx;
3. Вы вошли в систему как root пользователь.
Создание директорий
Корневая директория сайта, в которой будут находиться все файлы сайта, должна лежать в корне пути /var/www/
Структура будет выглядеть следующим образом:
/var/www/
├── example.com
│ └── public_html
├── example2.com
│ └── public_html
├── example3.com
│ └── public_html
Мы создадим отдельные директории для каждого сайта в /var/www, названия могут быть какими угодно, но для удобства лучше назвать их так как и сам домен. Каждая из этих директорий должна содержать папку с названием public_html, это как раз и будет та директория, в которой будут хоститься файлы сайта.
Начнем с создания корневой директории для домена example.com
sudo mkdir -p /var/www/example.com/public_html
Далее создаем index.html
sudo nano /var/www/example.com/public_html/index.html
Открываем index.html и добавляем следующие строки
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
Для того что бы избежать проблем с доступами, необходимо дать права на директории пользователю Nginx:
sudo chown -R www-data: /var/www/example.com
Создание Server Block
Поумолчанию в Ubuntu файлы конфигурации Nginx server blocks находятся в /etc/nginx/sites-available, которые связываются символичискими ссылками с /etc/nginx/sites-enabled.
Создаём новый файл конфигурации:
sudo vi /etc/nginx/sites-available/example.com.conf
Добавляем следующие строки:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
Файлы конфигурации можно называть любым именем, но лучше всего называть так же как и домен.
Создаём символическую ссылку в sites-enabled:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Проверяем файл конфигурации Nginx на синтаксические ошибки:
sudo nginx -t
Если ошибок нет, то должно появиться такое сообщение:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Теперь осталось перезагрузить Nginx:
sudo systemctl restart nginx
Всё готово, ваш сайт должен быть доступен по домену который вы использовали при настройке сайта.