Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с подключенным расширенным (extended) репозиторием
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7) с подключенным расширенным (extended) репозиторием

Аннотация

В данной статье представлена инструкция по установке web-сервера NGINX. Web-сервера NGINX (пакет nginx) доступен в составе расширенного репозитория Astra Linux Special Edition x.7 (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования).

Внимание!

Программное обеспечение расширенного репозитория является сторонним по отношению к Astra Linux, не дорабатывается с точки зрения выполнения требований по безопасности информации и не проверяется при сертификации.
Подробнее см. Использование стороннего программного обеспечения в аттестованных информационных системах, функционирующих под управлением Astra Linux Special Edition.

При использовании программного обеспечения расширенного репозитория рекомендуется для дополнительной изоляции процессов осуществлять их запуск в изолированной программной среде (контейнере). При использовании для этих целей Docker-контейнеров их запуск целесообразно осуществлять от имени непривилегированного пользователя в rootless-режиме, а при включенном мандатном контроле целостности (МКЦ) с применением технологии запуска контейнеров на пониженном или выделенном уровне МКЦ. Подробнее см. Руководство по КСЗ в составе эксплуатационной документации используемого обновления.

Что такое NGINX

Общая информация

NGINX (читается [engine x]) — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения, выполняющий следующие функции:

  • Основная функциональность HTTP-сервера:
    • Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кэш дескрипторов открытых файлов;
    • Акселерированное обратное проксирование с кэшированием, распределение нагрузки и отказоустойчивость;
    • Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием, распределение нагрузки и отказоустойчивость;
    • Модульность;
    • Фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, XSLT-фильтр, SSI-фильтр, преобразование изображений; параллельная обработка подзапросов на одной странице в SSI-фильтре через прокси или FastCGI/uwsgi/SCGI;
    • Поддержка SSL и расширения TLS SNI;
    • Поддержка HTTP/2 с приоретизацией на основе весов и зависимостей;
  • Расширенная функциональности HTTP-сервера;
    • Виртуальные серверы, определяемые по IP-адресу и имени;
    • Поддержка keep-alive и pipelined соединений;
    • Настройка форматов журналов, буферизованная запись в журналы, быстрая ротация журналов, запись журналов в syslog;
    • Специальные страницы для ошибок 3xx-5xx;
    • rewrite-модуль: изменение URI с помощью регулярных выражений;
    • Выполнение разных функций в зависимости от адреса клиента;
    • Ограничение доступа в зависимости от адреса клиента, по паролю (HTTP Basic аутентификация) и по результату подзапроса;
    • Проверка HTTP referer;
    • Методы PUT, DELETE, MKCOL, COPY и MOVE;
    • FLV и MP4 стриминг;
    • Возможность ограничения скорости отдачи ответов;
    • Возможность ограничение числа одновременных соединений и запросов с одного адреса;
    • Геолокация по IP-адресу;
    • A/B-тестирование;
    • Зеркалирование запросов;
    • Встроенный Perl;
    • Сценарный язык njs;
  • Функциональность почтового прокси-сервера:
    • Перенаправление пользователей на IMAP- или POP3-серверы с использованием внешнего HTTP-сервера аутентификации;
    • Аутентификация пользователей с помощью внешнего HTTP-сервера аутентификации и перенаправление соединения на внутренний SMTP-сервер;
    • Поддерживаемые методы аутентификации:
      • POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
      • IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
      • SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
    • Поддержка протоколов SSL, STARTTLS, STLS.
  • Функциональность TCP/UDP прокси-сервера:
    • Проксирование TCP и UDP;
    • Поддержка SSL и расширения TLS SNI для TCP;
    • Распределение нагрузки и отказоустойчивость;
    • Ограничение доступа в зависимости от адреса клиента;
    • Выполнение разных функций в зависимости от адреса клиента;
    • Ограничение числа одновременных соединений с одного адреса;
    • Настройка форматов журналов, буферизованная запись в журналы, быстрая ротация журналов, запись журналов в syslog;
    • Геолокация по IP-адресу;
    • A/B-тестирование;
    • Сценарный язык njs;
  • Архитектура и масштабируемость:
    • Один главный и несколько рабочих процессов, рабочие процессы работают под непривилегированным пользователем;
    • Изменение настроек и обновление исполняемого файла без перерыва в обслуживании клиентов;
    • Поддержка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select и poll:
      • Использование возможностей, предоставляемых kqueue, таких как EV_CLEAR, EV_DISABLE (для временного выключения события), NOTE_LOWAT, EV_EOF, число доступных данных, коды ошибок;
      • Использование возможностей, предоставляемых epoll, таких как EPOLLRDHUP (Linux 2.6.17+, glibc 2.8+) и EPOLLEXCLUSIVE (Linux 4.5+, glibc 2.24+);
    • Поддержка sendfile (FreeBSD 3.1+, Linux 2.2+, macOS 10.5+), sendfile64 (Linux 2.4.21+) и sendfilev (Solaris 8 7/01+);
    • Поддержка файлового AIO (FreeBSD 4.3+, Linux 2.6.22+);
    • Поддержка DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, macOS);
    • Поддержка accept-фильтров (FreeBSD 4.1+, NetBSD 5.0+) и TCP_DEFER_ACCEPT (Linux 2.4+);
    • На 10 000 неактивных HTTP keep-alive соединений расходуется около 2.5M памяти;
    • Минимум операций копирования данных.

Оригинальная документация NGINX

Оригинальная документация NGINX доступна по ссылке: https://nginx.org/ru/

Установка NGINX

Для установки пакета nginx:

  1. Подключить репозитории:
    1. актуальное оперативное обновление расширенного репозитория;

  2. Обновить список пакетов:

    sudo apt update

  3. Установить пакет nginx:

    sudo apt install nginx

Первичная проверка работоспособности NGINX

  1. Проверить состояние системной службы nginx:

    systemctl status nginx
    примерный результат проверки при штатной работе службы:

    sudo systemctl status nginx

    ● nginx.service - A high performance web server and a reverse proxy server
       Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2021-09-07 17:53:58 MSK; 17s ago
         Docs: man:nginx(8)
     Main PID: 2080 (nginx)
        Tasks: 5 (limit: 4637)
       Memory: 6.8M
       CGroup: /system.slice/nginx.service
               ├─2080 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
               ├─2083 nginx: worker process
               ├─2084 nginx: worker process
               ├─2085 nginx: worker process
               └─2086 nginx: worker process

    сен 07 17:53:58 se17 systemd[1]: Starting A high performance web server and a reverse proxy serv
    сен 07 17:53:58 se17 systemd[1]: Started A high performance web server and a reverse proxy serve



  2. Проверить работу web-сервера nginx, подключившись с помощью любого web-браузера к адресу localhost, например, для браузера firefox:

    firefox localhost
    При штатной работе сервера будет показана устанавливаемая по умолчанию страница nginx: