Сегодня я попытался добавить второй сервер для размещения одного из наших экземпляров Discourse. Контейнер настроен на использование внешних серверов Redis, PostgreSQL и хранилища — только веб-приложение. До сих пор мы запускали односерверные сайты за HAProxy без проблем. При работе с двумя серверами за HAProxy мы наблюдаем множество ошибок 404 от nginx для JS-файлов. Удаление любого из серверов из HAProxy устраняет проблему. URL-адреса файлов, которые вызывают ошибку 404, кажутся идентичными, поэтому я не могу понять, почему они не обслуживаются ни одним из серверов.
Переопределений в настройках разработчика нет. Мы используем стабильную версию 2.4.3.
Однако каждый контейнер хранит собственные копии ассетов, сгенерированных на этапе assets:precompile. Обязательно ли разделять предварительно скомпилированные ассеты?
Что ещё вы предприняли для тестирования, кроме добавления и удаления бэкендов в Haproxy?
Использует ли ваша конфигурация Haproxy случайный выбор бэкенда или привязку к сессии? Записывается ли ошибка 404 в лог Haproxy? Записывается ли она в лог nginx? На каком бэкенде (первом или втором) возникает ошибка? Требуется ли для вашего сайта вход в систему? Удаётся ли воспроизвести ошибки при прямом подключении к nginx из-за прокси-сервера? Существуют ли запрашиваемые файлы на диске? Ошибки возникают для всех JS-файлов или только для некоторых?