Итак, вы решили использовать Angie как замену Nginx. С чего начать процесс? Какие аспекты нужно учитывать при переходе? Разберёмся со всем по порядку.
Напомню, что Angie является форком Nginx. Это значительно упрощает процесс переезда с Nginx на Angie, так как Angie поддерживает все возможности и директивы конфигурации, что и Nginx. Обратный переход с Angie на Nginx может быть уже не таким простым, если мы начинаем использовать уникальные возможности Angie (например, возможности проксирования или балансировки).
Начнём с подготовки системы к миграции.
Навигация по циклу
Переезд с 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)
pnmv
26.05.2025 13:39Итак, вы решили использовать Angie как замену Nginx.
подождите, пожалуйста. можно ссылку туда, где объясняются преимущества такой миграции?
Nill-Ringil
26.05.2025 13:39Преимуществ ноль. Angie создан не программистами, а менеджерами и целью явно и однозначно было получение грантов из российского бюджета и иных источников
nginx развивается крупным мировым игроком, а angie собирается из его исходников с перебиванием копирайтов мутными людьми без опыта разработки
Само собой не только нет смысла переходить на эту сомнительную штуку, но и можно считать такой переход прямым вредительством
Nickmob Автор
26.05.2025 13:39Вы бы сначала подучили матчасть: что откуда появилось, кем создан и так далее.
Nill-Ringil
26.05.2025 13:39Ты это предлагаешь узнать человку который с Сысоевым лично знаком?
Я знаю
И знаю кем создан этот форк, а главное зачемИ как специалист я говорю, что миграция на эту сборочку очень плохая идея. Такую идею может предложить только вредитель
Кстати, минусить комменты под собственным постом это неприлично, но что с тебя взять, если ты этот паразитический форк рекламируешь
Nickmob Автор
26.05.2025 13:39Ну, если с Сысоевым знаком, то всё, больше аргументов нет.
Nill-Ringil
26.05.2025 13:39И ты снова минусишь под собственной статьей
Сколько заплатили манагеры делающие этот недофорк за его пиар?
VBart
26.05.2025 13:39Форк создан большинством бывших разработчиков nginx. Среди них Хомутов, Ермилов, Бартенев.
Сысоев не занимается разработкой nginx примерно с 2012 года. Не знаю, с кем вы там знакомы, но мы вместе с ним работали над NGINX Unit вплоть до его увольнения из F5. =)
VBart
26.05.2025 13:39Кстати, сам Игорь с вами не знаком. Что и не удивительно, оказалось такое же вранье, как и всё, что вы тут понавыдумывали.
Abyss777
Как дела с компиляцией модулей nginx в angie дела обстоят? Вот такой например https://github.com/stnoonan/spnego-http-auth-nginx-module как скомпилировать?
Nickmob Автор
Вообще нормально. Но этот компилировать не нужно, он есть в репозитории Angie. https://angie.software/angie/docs/installation/external-modules/auto-spnego/#external-auth-spnego