Скорее всего, это не вызвано напрямую обратным прокси-сервером.
Для постов, созданных через API, Discourse использует DistributedMemoizer вокруг PostsController#create, чтобы избежать дублирования создания постов. Этот мемоизатор использует DistributedMutex с поддержкой Redis, имеющий очень короткое время действия — 1 секунду. Предупреждение означает, что работа по созданию/сериализации поста внутри этой блокировки заняла больше времени, чем ожидалось.
Таким образом:
- если пост через API всё же создан успешно, это предупреждение, а не корневая причина сбоя;
- сообщение
expected max: 1 secs, took an extra 1 secsозначает, что блокировка удерживалась примерно 2 секунды; - проблема скорее связана с производительностью сервера, задержками Redis/Postgres, дисковым вводом-выводом, нагрузкой на ЦП/ОЗУ, плагинами или медленной постобработкой, чем с самим обратным прокси-сервером nginx/1Panel;
- причина, по которой это возникает только при публикации через API, в том, что данный путь мемоизации используется именно для API-запросов.
Стоит проверить следующее:
- Успешен ли API-запрос и создаётся ли только один пост?
- Сколько времени занимает API-запрос со стороны клиента?
- Не исчерпаны ли ресурсы ЦП, памяти, swap или дисковый ввод-вывод во время публикации через API?
- Находятся ли Redis и Postgres в одном контейнере/на одном хосте, и работают ли они корректно?
- Повторяется ли предупреждение при создании очень небольшого поста с простым текстом без изображений/загрузок?
- Установлены ли нестандартные плагины?
Поскольку речь идёт о развёртывании через 1Panel/контейнеры, а не о стандартной установке Discourse в Docker, может быть полезно воспроизвести проблему на официально поддерживаемой установке, если это возможно, прежде чем считать это ошибкой ядра Discourse.