popov . dev

Main

Library

Articles

Настройка Nginx ...

Настройка Nginx сервера в Debian 12 и запуск статичного сайта

В этой статье вы узнаете, как настроить nginx в Debian 12 и создать простую html-страницу, доступ к которой можно получить из браузера.

Разделы, которые мы будем рассматривать в процессе:

  1. Установка nginx на Debian 12
  2. Настройка ufw (простого брандмауэра)
  3. Конфигурационный файл Nginx
  4. Направляем Nginx по умолчанию на свой сайт

Необходимые условия

  1. Готовый компьютер или удаленный сервер с Debian.
  2. Возможность пользоваться терминалом или подключаться к нему по ssh.
  3. Есть доступ root/sudo.

Для подготовки вы можете использовать наши статьи по настройке сервера с Debian и если компьютер будет находится в удаленном доступе то вероятно потребуется доступ по ssh и sftp для передачи файлов.

Установка Nginx в Debian 12

Откройте терминал в Debian или подключитесь к нему по ssh, запустите следующую команду, чтобы обновить список пакетов:

sudo apt-get update

Затем установите пакет nginx:

sudo apt-get install nginx -y

После того как установится, нам необходимо настроить брандмауэр для защиты соединений.

Настройка параметров брандмауэра

Как правило, на вашем компьютере установлен какой-либо брандмауэр, как и на нашем компьютере с Debian. Я собираюсь использовать ufw (простой брандмауэр), поскольку он очень удобен в использовании и обеспечивает достаточную безопасность, которая нам нужна.

Если у вас не установлен ufw, установите его командой:

sudo apt-get install ufw -y

После установки ufw включите его:

sudo ufw enable

Чтобы проверить его состояние, что он запущен и работает:

sudo ufw status

Если вы используете ssh для подключения к своему серверу, не забудьте открыть порт, который использует ваш ssh-сервер! Порт ssh по умолчанию - порт 22, если вы ранее меняли его вручную в файле /etc/ssh/sshd_config, откройте этот порт вместо этого.

sudo ufw allow 22

Тем не менее, я обычно использую другой порт, как правило, более безопасно не использовать порт 22, потому что некоторые хакеры постоянно сканируют порт 22 по всему Интернету, поскольку это порт по умолчанию для ssh, поэтому было бы лучше использовать другой порт, чтобы избежать подобного при слепой атаке.

Чтобы Nginx мог передавать веб-контент внешним подключениям, разрешите доступ к порту 80 (порт по умолчанию для HTTP).

sudo ufw allow 80

Работа с Nginx

После всех установок и предварительной настройки мы, наконец, начнем работу с Nginx! Сначала проверим, запущен ли ваш сервис nginx:

sudo systemctl status nginx

Если ваша служба Nginx работает нормально (Active: active (running)), перейдите по адресу localhost в браузере, вы должны увидеть эту страницу:

Конфигурационный файл Nginx

В Debian (в большинстве дистрибутивов Linux) файлы конфигурации Nginx расположены по адресу /etc/nginx/, которые используются для определения поведения веб-сервера Nginx, как он должен обслуживать и как он должен обрабатывать различные аспекты веб-хостинга.

Наиболее важными конфигурационными файлами, которые мы рассмотрим, являются nginx.conf и файлы в каталоге sites-available.

Если вы откроете файл nginx.conf, то увидите что-то вроде этого:

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

Для тех кому интересно, вот базовый синтаксис в конфигурационных файлах Nginx:

# это директива, подобная паре ключ-значение
index index.html;

# это контекст, который будет содержать несколько директив
server {
  listen 80;
  ...
}

Направляем Nginx по умолчанию на свой сайт (страницу)

Взглянем на файл /etc/nginx/sites-available/default.

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

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

Вероятно, в файле у вас еще присутствуют комментарии (строки начинающиеся с символа решетки #), они являются вспомогательным средством, всего лишь справкой. Разберем конфигурационный файл подробнее.

Это виртуальный веб-сервер, которым управляет nginx, корневой каталог веб-сервера (root) находится по адресу /var/www/html. Чтобы работать с нашей html-страницей, сначала нам нужно добавить html-файл вашей страницы в корневой каталог веб-сервера, который находится в /var/www/html.

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Страница</title>
</head>
<body>
    <h1>Привет мир!</h1>
</body>
</html>

Допустим, это html-контент, который вы хотите использовать, поэтому вставьте его в файл mypage.html, который вы только что создали в каталоге /var/www/html.

После этого добавьте следующую строку в файл/etc/nginx/sites-available/default:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        index mypage.html; # Добавили эту строку
        try_files $uri $uri/ =404;
    }
}

Это будет иметь индекс mypage.html если местоположение HTTP-запроса находится в корневом каталоге / (/var/www/html). По умолчанию, когда вы отправляете запрос на URL-адрес, он находится в корневом каталоге. Теперь вы можете проверить, все ли правильно, выполнив:

sudo nginx -t

Вывод в случае отсутствия ошибок:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Если команда выдаст иное, значит есть какие-то ошибки, проверьте, нет ли у вас опечаток в файле /etc/nginx/sites-available/default. После этого вам необходимо перезагрузить nginx, чтобы изменения в файлах конфигурации вступили в силу.

sudo systemctl restart nginx.service

Теперь при открытии страницы по адресу localhost вы увидите надпись Привет мир! Если отображается старая страница, то возможно нужно очистить кэш браузера, либо просто открыть адрес в режиме инкогнито вашего браузера.

Comments

In order to leave your opinion, you need to register on the website