Enquanto 502 corresponde ao tempo limite de back-end, 500 é um erro do servidor, indicando um erro de configuração. Você pode querer corrigir o seguinte em primeira mão:
Antes do sono, você substituiu a primeira linha de api_upstream.conf
por
sed -i "s/server xxx/server $(docker port $appname-1 $appport)/g" /etc/nginx/conf.d/api_upstream.conf
(Você até faz duas vezes ... propósito? Copiar e colar?)
Mas o que você ainda não fez naquele momento está substituindo a segunda linha, que permanece sendo
server $(docker port ${appname}-2 ${appport}) max_fails=2 fail_timeout=1s;${nl}
Suponho que $appname
e $appport
estejam vazios, fazendo com que a subshell falhe / fique vazia, o que significa que essa linha é realmente interpretada como
server max_fails=2 fail_timeout=1s;
Quando o balanceamento de carga das solicitações com o round-robin padrão, o nginx pode enfrentar um problema lá ...
Você deve garantir que api_upstream.conf
sempre contenha dados válidos assim que for usado. Você pode adicionar server
s mais tarde, mas deixar um espaço reservado parcialmente escrito não produzirá nada de bom.