Логотип
vexaiv

Создание простейшего сайта на Nginx

Шаг 1: Установка Nginx и запуск локального сервера


Устанавливаем Nginx:
	
    sudo apt update
sudo apt install nginx -y

После установки Nginx автоматически запустится.
Чтобы проверить, всё ли работает, откройте браузер и введите http://localhost. Если вы увидели страницу приветствия Nginx — всё отлично.

https://vexaiv.ru/images/nginx.default.debian.jpg


Шаг 2: Создаем структуру и файлы сайта


Первым делом нужно создать директорию, где будут лежать файлы вашего сайта. Обычно принято держать сайты в /var/www/:
	
    sudo mkdir -p /var/www/my-site

Создайте простую HTML-страницу:
	
    sudo nano /var/www/my-site/index.html

Вставьте в файл простой код web-страницы, которая будет отображаться на вашем сайте:
	
    <!DOCTYPE html> <html lang="ru"> <head>
    <meta charset="UTF-8">
    <title>Мой сайт</title>
</head>
<body>
    <h1>Привет!</h1>
    <p>Этот сайт работает на Nginx.</p>
</body>
</html>

Сохраните файл (в nano: Ctrl+X, затем Y, затем Enter).

🔧 Шаг 3: Настраиваем Nginx (создаем конфигурацию для сайта)


Нам нужно создать файл конфигурации, который укажет Nginx откуда брать файлы для вашего сайта. Создайте новый конфигурационный файл:
	
    sudo nano /etc/nginx/sites-available/my-site

Вставьте в него базовую конфигурацию:
	
    server {
    # Слушаем 80 порт (стандартный порт HTTP)
    listen 80;
    
    server_name local.my-site;

    # Корневая папка с файлами сайта
    root /var/www/my-site;

    # Главный файл, который будет открываться по умолчанию
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Сохраните файл.

Обратите внимание, что параметр server_name я указал как local.my-site, хотя файл конфигурации называется my-site. Я это сделал специально, чтобы показать, что вы можете дать им разные названия.
Nginx читает сразу все конфигурации сайтов в /etc/nginx/sites-enabled в алфавитном порядке, и имена конфигурационных файлов по сути влияют только на то, какой файл будет обработан первым.
Параметр server_name же читается при обработке запроса в браузере. Nginx видит, что пришел запрос, например, http://local.my-site/articles.html, и он ищет в активных конфигурациях блок server с параметром server_name local.my-site, и использует первую подходящую конфигурацию.

Шаг 4: Включаем сайт


Чтобы активировать сайт в Nginx нужно создать символическую ссылку в /etc/nginx/sites-enabled, указывающую на созданный конфиг /etc/nginx/sites-available/my-site:
	
    sudo ln -s /etc/nginx/sites-available/my-site /etc/nginx/sites-enabled/

Проверьте, нет ли ошибок в конфигурации (это важный шаг!):
	
    sudo nginx -t

Вы должны увидеть: syntax is ok и test is successful.

Также проверьте права доступа. Обычно nginx работает от пользователя www-data и этот пользователь должен быть владельцем файлов сайта:
	
    chown -R www-data:www-data /var/www/my-site

-R значит "рекурсивно для всех вложенных файлов и папок, www-data:www-data - владелец "пользователь:группа".

Если всё хорошо, перезагрузите Nginx, чтобы применить изменения и активировать конфигурацию:
	
    для systemd:
sudo systemctl reload nginx

для sysv:
sudo service nginx restart

Еще одна важная деталь для локального тестирования: мы не зарегистрировали домен local.my-site в глобальной сети, так что браузер не сможет его найти.
Для локальной регистрации этого домена на вашей машине нужно прописать его в файл /etc/hosts (Linux/macOS) или C:\Windows\System32\drivers\etc\hosts (Windows) такой строкой:
	
    127.0.0.1 local.my-site

Без этого браузер не сможет преобразовать local.my-site в IP-адрес и не сможет открыть страницу.

Шаг 6: Проверяем результат


Откройте браузер и введите http://local.my-site.
Вместо стандартной страницы-заглушки Nginx вы должны увидеть вашу страницу:

https://vexaiv.ru/images/nginx.minimal.jpg


Победа


Вы создали свой первый сайт на Nginx. Поздравляю.