Создание и настройка виртуальных хостов в Nginx

Файл дефолтных настроек NginxДля обслуживания каждого сайта (домена) размещенного на сервере в веб-сервере Nginx необходимо создать так называемый виртуальный хост (серверный блок).

Он представляет из себя файл с несколькими настройками. Посмотрим как его создать и настроить чтобы nginx понял, что нужно делать.

Предварительно создаем директорию для файлов своего сайта на сервере. См. «Как создать сайт на Nginx?».

1. Создаем виртуальный хост (серверный блок).

По умолчанию в Nginx уже есть дефолтный файл настроек сайта — default. Он расположен по адресу /etc/nginx/sites-available/default. На его основе мы и создадим свой, для нашего сайта.

Для этого заходим на сервер VPS и вводим следующую команду. С ее помощью будет создан новый виртуальный хост и в него будет скопировано содержимое штатного файла настроек default.

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/site.com

Где site.com название файла настроек (серверного блока/виртуального хоста) нашего сайта. При желании можно придумать этому файлу любое название. Главное потом не запутаться.

Все, виртуальный хост Nginx создан, теперь нужно его настроить.

2. Настройка виртуального хоста в Nginx.

Открываем на редактирование свежесозданный серверный блок.

sudo nano /etc/nginx/sites-available/site.com

Изменяем некоторые его строки и если надо раскомментируем их. И приводим их к такому виду.

server   {

listen 80 default_server;

listen [::]:80 default_server;

root /var/www/site.com/html;

index index.php index.html index.nginx-debian.html;

server_name site.com www.site.com;

location / {

try_files $uri $uri/  /index.php?$args;

location ~ /\.ht  {

deny all;

Сохраняем изменения CTRL+O+Enter и выходим CTRL+X.

Так как теперь у нас этот виртуальный хост объявлен дефолтным (default_server), то необходимо удалить эти директивы из файла default. Открываем его на редактирование и удаляем из него default_server.

sudo nano /etc/nginx/sites-available/default

И если в будущем придется создавать и настраивать новые виртуальные хосты на этом сервере, то и в них, директиву default_server так же придется удалить. Так как иначе ни чего работать не будет. Эта директива должна быть прописана только в одном виртуальном хосте.

Проверим все ли в порядке с повторением default_server на нашем сервере Nginx.

grep -R default_server /etc/nginx/sites-enabled/

Будет выведен список файлов, где имеется эта директива. Она должна быть в раскомментированном виде только в одном файле (в других может присутствовать, но быть закомментированной). Если default_server обнаружится где-то еще, то ее нужно удалить из этих файлов.

Все, настройка завершена, необходимо включить виртуальный хост.

3. Включаем виртуальный хост в Nginx.

Для включения создаем ссылку с /etc/nginx/sites-available/site.com  в  /etc/nginx/sites-enabled/site.com. Этот файл Nginx читает и руководствуется директивами из него. Выполняем команду.

sudo ln -s /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/

Теперь в sites-enabled будет создан файл с настройками site.com.

4. Настраиваем конфигурационный файл Nginx.

Что бы избежать проблем с памятью, которые могут возникнуть из-за дополнительных имен сервера необходимо в nginx.conf раскомментировать одну директиву. Для этого откроем его на редактирование.

sudo nano /etc/nginx/nginx.conf

И раскомментируем строку.

http  {

server_names_hash_bucket_size 64;

}

Сохраняем и закрываем.

Проверяем Nginx на наличие ошибок.

sudo nginx -t

Перезапускаем Nginx для применения изменений.

sudo systemctl reload nginx

Все, виртуальный хост (серверный блок) Nginx настроен и готов к работе

5. Проверяем работу сайта.

В браузере открываем site.com и наблюдаем его главную страницу.

Примечания и дополнения

— Если что-то пошло не так можно удалить файл настроек из sites-enabled и все начать заново. Для этого вводим команду.

sudo rm /etc/nginx/sites-enabled/site.com

Еще статьи по веб-серверу Nginx и VPS/VDS

— Настройка Nginx на работу с постоянными ссылками в WordPress

— Предварительная настройка UFW на сервере VPS Ubuntu

— SSL сертификат Let’s Encrypt для домена при помощи certbot

— Установка PHP 8.1 на сервере VPS с Ubuntu 22.04 и Nginx

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *