Nginx — это один из самых востребованных веб-серверов с открытым исходным кодом. Зачастую он используется как веб-сервер, обратный или почтовый прокси-сервер.

Установка Nginx

Для установки сервера Nginx понадобится локальная машина либо облачный сервер с установленной операционной системой Ubuntu. Программа доступна в официальных репозиториях Ubuntu по умолчанию. Установить её можно непосредственно из них, используя систему управления пакетами apt

Для начала обновляем систему:

После окончания процесса обновления пакетов устанавливаем сам NGINX:

добавляем программу в автозагрузку:

проверяем, что веб-сервер успешно установлен и работает, а также добавлен в автозагрузку. Проверим статус работы веб-сервера:

Строка «Active: active (running)…» указывает на успешную работу сервера. Есть и другой способ проверить его работу. Нужно вставить IP-адрес сервера в адресную строку браузера. Если результат будет таким же, как на картинке ниже, то веб-сервер работает успешно.

Image3

Теперь проверим его наличие в автозагрузке:

Если в ответ на выполненную команду получаем «enabled», значит веб-сервер добавлен в автозагрузки.

Для работы с установленным веб-сервером пригодятся базовые команды управления. Они приведены в таблице ниже. 

Функция Команда
Запуск sudo systemctl start nginx
Отключение sudo systemctl stop nginx
Перезапуск sudo systemctl restart nginx
Перезагрузка sudo systemctl reload nginx
Проверка состояния службы sudo systemctl status nginx
Тестирование конфигурации sudo nginx -t

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

Установка и настройка брандмауэра позволит закрыть все порты, кроме необходимых нам — 22 (SSH), 80 (HTTP), 443 (HTTPS). Первый протокол необходим для подключения к удаленному серверу. Второй и третий необходим для связи между клиентом и сайтом. Главное их отличие в том, что HTTPS — это зашифрованный HTTP. Шифрование данных происходит благодаря SSL-сертификату.

Установим утилиту UFW:

После успешной установки добавим веб-сервер в список доступных приложений брандмауэра:

Заполним файл следующим образом:

Проверим список доступных приложений:

Если среди них есть веб-сервер, значит всё сделано верно. Теперь нужно запустить брандмауэр и разрешить передачу трафика по вышеуказанным портам:

Чтобы проверить изменения, вводим команду:

Если всё сделано правильно, то в статусе будут перечислены все порты, которые нам необходимы.

Настройка Nginx

Администрирование веб-сервера представляет из себя изменение и поддержку конфигурационных файлов. Среди них 1 файл конфигурации и 2 каталога. Это nginx.confsites-available и sites-enabled соответственно. Все они лежат в директории /etc/nginx.

Файл nginx.conf — это главный конфигурационный файл. Каталог sites-available содержит файлы конфигураций виртуальных хостов. Каждый отдельный файл хранит информацию об определенном сайте. Это его имя, IP-адрес и другие данные. Каталог sites-enabled, в свою очередь, состоит только из конфигураций активных сайтов. Только из директории sites-enabled читаются файлы конфигурации для виртуальных хостов. Также в ней хранятся ссылки на sites-available. Такая структура позволяет временно отключать сайты без потери их конфигураций. 

Главный файл конфигурации. Открываем в редакторе:

После выполнения команды откроется файл, разделенный на модули.

Image4

Каждый отдельный модуль — это директива, которая отвечает за определенные настройки веб-сервера. Они бывают простыми и блочными. Блочные директивы, помимо имени и параметров, хранят набор дополнительных инструкций, размещенных внутри фигурных скобок. 

Перечислим некоторую часть директив главного конфигурационного файла:

  • user — это пользователь, от которого осуществляются все рабочие процессы.
  • worker_processes — число рабочих процессов сервера. Оно должно быть не больше, чем количество ядер процессора. Параметр auto установит число автоматически.
  • pid — файл с номером главного процесса (скорее всего вы никогда не будете им пользоваться).
  • include — отвечает за подключение иных файлов конфигурации, удовлетворяющих заданной маске.
  • events — контекст, состоящий из директив, влияющих на работу сетевого соединения.
    • worker_connections — максимальное число одновременно работающих соединений одного рабочего процесса.
    • multi_accept — флаг, который может быть как включен (on), так и выключен (off). Если он включен, то рабочий процесс будет принимать все новые соединения, иначе только одно.
    • use — указывает метод обработки соединений. По умолчанию сервер выбирает наиболее подходящий и эффективный.
  • http — контекст, состоящий из директив, отвечающих за работу HTTP-сервера.
    • sendfile — включает (on) или отключает (off) метод отправки данных sendfile().
    • tcp_nopushtcp_nodelay — параметры, влияющие на производительность. Первый заставляет сервер отправлять заголовки HTTP-ответов одним пакетом, а второй позволяет не буферизировать данные и отправлять их короткими очередями.
    • keepalive_timeout — параметр, отвечающий за время ожидания keep-alive соединения до его разрыва со стороны сервера.
    • keepalive_requests — максимальное число запросов по одному keep-alive соединению.
    • error_log — лог ошибок веб-сервера. Для сбора ошибок в определенной секции (http, server и т.д.) необходимо разместить директиву внутри нее.
    • gzip — сжатие контента. 

Настройка виртуальных хостов

На сервере может быть расположено множество сайтов. Все запросы приходят на его IP-адрес, а после веб-сервер определяет, какой дать ответ, в зависимости от домена. Виртуальные хосты предназначены для того, чтобы сервер понимал, что и к какому домену относится. В качестве примера создадим сайт testsite.dev.

Заполним его минимальными данными для отображения сайта:

После создадим конфигурационный файл сайта в папке sites-available:

Заполним его простейшей конфигурацией:

Последнее  — это создать ссылку в директории sites-enabled на конфигурацию сайта testsite.dev, чтобы добавить его из доступных во включенные:

После создания виртуального хоста проведем тестирование конфигурации:

Отключим сайт по умолчанию, удалив запись о дефолтном виртуальном хосте:

Стоит уточнить, что после того, как мы отключим сайт по умолчанию, Nginx будет использовать первый встреченный серверный блок в качестве резервного сайта (то есть по IP-адресу сервера будет открываться самый первый сайт из конфигурации Nginx).

Перезагружаем веб-сервер:

Проверим, что всё было сделано верно и сайт работает. Для этого можно вставить IP-адрес сервера или домен, если он зарегистрирован, в адресную строку браузера:

Image1

Другой вариант — воспользоваться командой curl:

Image2

Заключение

Это только базовая, первоначальная настройка. На самом деле паменторов как для всего сервера, так и для каждого из виртуальных хостов очень много. Поэтому настройку можно произвести с ювелирной точностью!  Кроме этого, сервер подготовлен к переходу на зашифрованный протокол данных. Для этого нужно получить SSL-сертификат и настроить переадресацию с HTTP-протокола на HTTPS (443 порт). Для настройки защищенного соединения вам будет необходим сертификат SSL. 

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

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