Итак, вы решили использовать Angie как замену Nginx. С чего начать процесс? Какие аспекты нужно учитывать при переходе? Разберёмся со всем по порядку.

Напомню, что Angie является форком Nginx. Это значительно упрощает процесс переезда с Nginx на Angie, так как Angie поддерживает все возможности и директивы конфигурации, что и Nginx. Обратный переход с Angie на Nginx может быть уже не таким простым, если мы начинаем использовать уникальные возможности Angie (например, возможности проксирования или балансировки).

Начнём с подготовки системы к миграции.

Навигация по циклу

  1. Введение в Angie: краткая история и отличия от Nginx.

  2. Установка Angie из пакетов и в докере.

  3. Переезд с Nginx на Angie. Пошаговая инструкция.

Видеоверсия

Для вашего удобства доступен видеоформат этой статьи на YouTube, Rutube, VKVideo.

Готовимся к миграции

В первом этапе необходимо собрать исходные данные для переезда. А именно, ответить на следующие вопросы.

  • Какая версия Nginx используется?

  • В каких директориях находится конфигурация?

  • Есть ли отличия от стандартных пакетов (версия библиотеки SSL, кастомные опции сборки, нестандартные статические модули)?

  • Какие динамические модули подключены?

  • Есть ли связанные с названием сервиса команды (обновление сертификатов, автоматизация конфигов и т.д.)?

Для поиска конфигурации удобно начать с файла /etc/nginx/nginx.conf. Практически всегда это основной файл конфигурации, в котором можно найти все директивы include для остальных файлов конфигурации. Если основной конфиг отсутствует в стандартной директории, то можно посмотреть параметр --conf-path в выводе команды nginx -V. Для поиска подключенных модулей и директив include можно использовать команду nginx -T:

nginx -T | grep load_module
nginx -T | grep include

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

Установка Angie

Процесс установки Angie был подробно рассмотрен в прошлой статье, поэтому не будем повторять его здесь. В контексте миграции важно, что пакет Angie допускает параллельную установку с Nginx. Это значит, что, можно установить Angie на системе с активным Nginx и, не прерывая работу сервиса, готовить переключение. 

Важно после установки Angie отключить автозагрузку сервиса для избежания проблем при старте системы в переходный период:

systemctl disable angie

Это связано с тем, Nginx и Angie не смогут работать на одном и том же сокете. Если Angie запустится раньше, Nginx не сможет запуститься. Обратно автозагрузку Angie можно будет включить уже после переезда.

Для установки всех дополнительных модулей берем их из репозитория Angie. Сразу стоит прописать загрузку всех динамических модулей в /etc/angie/angie.conf. Например:

load_module modules/ngx_http_brotli_static_module.so;
load_module modules/ngx_http_brotli_filter_module.so;

В случае использования docker-контейнеров стоит запустить Angie на непересекающихся портах и выделить отдельную директорию для конфигурации на хостовой файловой системе.

Модификация конфигов

Основные изменения по конфигурации будут касаться изменения путей. Пути к файлам конфигурации меняются с /etc/nginx на /etc/angie, пути к логам c /var/log/nginx на /var/log/angie

Для начала переносим основные файлы конфигурации из /etc/nginx в /etc/angie. Важно: конфигурацию Nginx в /etc/nginx изменять не надо ни в коем случае. Она останется для отката на Nginx в случае проблем.

В целом стоит начать с поиска путей /nginx для уточнения вариантов замены:

grep -rn '/nginx' /etc/angie

Далее пройдёмся по конфигам и заменим пути /nginx на /angie:

find . -type f -name '*.conf' -exec sed --follow-symlinks -i 's|/nginx|/angie|g' {} \;

Если среди конфигов были символические ссылки (например, sites-enabled/), также нужно поменять в них пути. Решение, показанное дальше, состоит из нескольких шагов; возможно, здесь возможен более элегантный способ (просьба предложить в комментариях).  Здесь сначала формируем команды в скрипт, а потом его запускаем:

find /etc/angie/sites-enabled/* -type l -printf 'ln -nsf 
 "$(readlink "%p" | sed s!/etc/nginx/sites-available!/etc/angie/sites-available!)" 
 "$(echo "%p" | sed s!/etc/nginx/sites-available!/etc/angie/sites-available!)"\n' 
 > script.sh
chmod +x script.sh
./script.sh

Протестируем сформированную конфигурацию:

sudo angie -t

Если ошибок нет, можно переходить к следующему этапу. Важно помнить, что тестирование конфигурации проверяет лишь синтаксис конфигурационных файлов и не гарантирует успешный запуск сервера, ошибки необходимо отслеживать в error_log.

Переключение на Angie

Для полного тестирования конфигурации потребуется запустить Angie. Задача при переходе: минимизировать простой. Ещё раз напоминаю про тестирование конфигурации:

sudo angie -t

Далее останавливаем Nginx и стартуем Angie следующей конструкцией:

sudo systemctl stop nginx && sudo systemctl start angie

Если получаем проблемы, некорректное поведение системы, выполняем откат обратно на Nginx и спокойно решаем проблемы:

sudo systemctl stop angie && sudo systemctl start nginx

Мониторим систему, смотрим ошибки в error_log. В случае, если переход прошёл успешно, меняем настройки автозапуска для сервисов:

sudo systemctl disable nginx
sudo systemctl enable angie

Через какое-то время можно будет удалить пакеты Nginx, конфигурацию в /etc/nginx и логи в /var/log/nginx.

Также не забываем про внешние утилиты, которые работали с Nginx: команды для обновления сертификатов, которые делают релоад, настройки ротации логов, проверки мониторинга, если они опирались на название процессов или заголовок Server в ответе. Для перевода на Angie можно пойти двумя путями: изменить скрипты и проверки на новый процесс и сервис, либо сделать символические ссылки и псевдонимы для того, чтобы работали старые команды Nginx. Например, для юнита сервиса angie можно сделать псевдоним nginx с использованием символической ссылки:

sudo ln -s /usr/lib/systemd/system/angie.service /etc/systemd/system/nginx.service
sudo systemctl daemon-reload
sudo systemctl reload nginx

Также можно создавать символические ссылки для путей, если необходимо.

На этом переезд на Angie можно считать законченным, а если у вас есть идеи, что еще можно добавить в этот процесс — пишите в комментариях.

Комментарии (13)


  1. Abyss777
    26.05.2025 13:39

    Как дела с компиляцией модулей nginx в angie дела обстоят? Вот такой например https://github.com/stnoonan/spnego-http-auth-nginx-module как скомпилировать?


    1. Nickmob Автор
      26.05.2025 13:39

      Вообще нормально. Но этот компилировать не нужно, он есть в репозитории Angie. https://angie.software/angie/docs/installation/external-modules/auto-spnego/#external-auth-spnego


  1. pnmv
    26.05.2025 13:39

    Итак, вы решили использовать Angie как замену Nginx.

    подождите, пожалуйста. можно ссылку туда, где объясняются преимущества такой миграции?


    1. Nickmob Автор
      26.05.2025 13:39

      Есть такая - первая статься из цикла, ссылка в начале статьи.


      1. pnmv
        26.05.2025 13:39

        понятно. спасибо.


    1. Nill-Ringil
      26.05.2025 13:39

      Преимуществ ноль. Angie создан не программистами, а менеджерами и целью явно и однозначно было получение грантов из российского бюджета и иных источников

      nginx развивается крупным мировым игроком, а angie собирается из его исходников с перебиванием копирайтов мутными людьми без опыта разработки

      Само собой не только нет смысла переходить на эту сомнительную штуку, но и можно считать такой переход прямым вредительством


      1. Nickmob Автор
        26.05.2025 13:39

        Вы бы сначала подучили матчасть: что откуда появилось, кем создан и так далее.


        1. Nill-Ringil
          26.05.2025 13:39

          Ты это предлагаешь узнать человку который с Сысоевым лично знаком?
          Я знаю
          И знаю кем создан этот форк, а главное зачем

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

          Кстати, минусить комменты под собственным постом это неприлично, но что с тебя взять, если ты этот паразитический форк рекламируешь


          1. Nickmob Автор
            26.05.2025 13:39

            Ну, если с Сысоевым знаком, то всё, больше аргументов нет.


            1. Nill-Ringil
              26.05.2025 13:39

              И ты снова минусишь под собственной статьей

              Сколько заплатили манагеры делающие этот недофорк за его пиар?


              1. c_kotik
                26.05.2025 13:39

                Лично такого уволил разве что. Вот и все знакомство.


          1. VBart
            26.05.2025 13:39

            Форк создан большинством бывших разработчиков nginx. Среди них Хомутов, Ермилов, Бартенев.

            Сысоев не занимается разработкой nginx примерно с 2012 года. Не знаю, с кем вы там знакомы, но мы вместе с ним работали над NGINX Unit вплоть до его увольнения из F5. =)


          1. VBart
            26.05.2025 13:39

            Кстати, сам Игорь с вами не знаком. Что и не удивительно, оказалось такое же вранье, как и всё, что вы тут понавыдумывали.