Задать вопрос
@Kirill48

Кто сталкивался с 'Nginx invalid URL prefix' и 'Promtail client version too old' после обновления Docker на Ubuntu 24.04?

Здравствуйте. Я пытаюсь настроить сбор логов Docker-контейнеров с помощью стека Loki/Grafana/Promtail на сервере Ubuntu 24.04 и столкнулся с двумя неустранимыми проблемами. Сервисы развернуты через Docker Compose v5.x

Буду благодарен за любую помощь в диагностике.

Конфигурация сервера:
  • ОС: Ubuntu 24.04 LTS
  • Nginx: 1.24.0 (Ubuntu)
  • Docker: Engine 29.1.3 (API 1.52)
  • Стек: Loki/Grafana/Promtail




Проблема 1: Ошибка Nginx "invalid URL prefix"

При попытке настроить Nginx для проксирования на 127.0.0.1 или даже просто 127.0.0.1:3000 в файлах /etc/nginx/sites-available/ я постоянно получаю ошибку синтаксиса invalid URL prefix на строке proxy_pass.

Пример синтаксиса, который выдает ошибку (строка 19):

location / {
    proxy_pass 127.0.0.1;
    # ... заголовки
}


Вывод команды nginx -t:

2025/12/13 18:49:24 [emerg] 2666660#2666660: invalid URL prefix in /etc/nginx/sites-enabled/admin-control-center:19
nginx: configuration file /etc/nginx/nginx.conf test failed


Файл /etc/nginx/nginx.conf (основной) выглядит стандартно, проблема именно в конфигурации сайта.



Проблема 2: Ошибка совместимости Docker API в Promtail

Я обновил Docker Engine с очень старой версии до 29.1.3 (API 1.52), перезапустил службу Docker (systemctl restart docker), но агент Promtail (версии 2.9.0) продолжает выдавать ошибку при попытке подключиться к сокету /var/run/docker.sock:

Логи Promtail:

level=error ts=2025-12-13T17:33:43.277546384Z caller=refresh.go:99 component=docker_discovery discovery=docker config=docker-containers/unix:///var/run/docker.sock:80 msg="Unable to refresh target groups" err="error while listing containers: Error response from daemon: client version 1.42 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"


Команда docker version показывает, что API 1.52 используется. Перезапуск Docker не помог.



Вопросы к сообществу:

  1. Почему Nginx 1.24.0 на Ubuntu 24.04 не принимает стандартный синтаксис proxy_pass http://...? Есть ли какие-то системные настройки, которые это блокируют, или я упускаю элементарную синтаксическую ошибку?
  2. Почему Promtail "видит" старую версию API 1.42, если Docker Engine обновлен до 1.52 и служба была перезапущена? Как принудительно обновить сокет Docker или заставить Promtail использовать актуальную версию API?
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Средний 5 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия C++ разработчик
    11 месяцев
    Далее
  • Хекслет
    Fullstack-разработчик на Node.js
    16 месяцев
    Далее
  • Stepik
    Основы работы в консоли Linux, настройка сетевых служб (кластер)
    1 неделя
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы