![Código de status HTTP retornado pelo Apache configurado como proxy com diretiva proxytimeout](https://rvso.com/image/1586926/C%C3%B3digo%20de%20status%20HTTP%20retornado%20pelo%20Apache%20configurado%20como%20proxy%20com%20diretiva%20proxytimeout.png)
Tenho uma pergunta geral sobre o comportamento do servidor web Apache que está configurado como um servidor proxy e possui uma diretivaProxyTimeoutdefinido em 1 segundo para fins de teste.
Meu servidor back-end (upsteam) é um servidor HTTP integrado em Python que espera deliberadamente mais de 1 segundo para enviar a resposta ao servidor proxy (Apache mencionado acima) e a envia 3 segundos após receber a solicitação.
De acordo com os documentos oficiais do Apache(https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxytimeout)
o proxy deve aguardar a resposta do servidor back-end pelo período de tempo especificado emProxyTimeoutdiretiva e se não houver resposta ela deve "retornar um tempo limite" que é, pelo que entendi, um código de status 504, porque a especificação deste código de status diz:
504 Gateway Timeout - O servidor estava agindo como gateway ou proxy e não recebeu uma resposta oportuna do servidor upstream.
No entanto, quando envio solicitações ao servidor proxy, ele retorna o código de erro 502, que indica que o proxy recebe uma resposta inválida do servidor upstream.
Então tento entender por que isso acontece. Por que o código de status é 502 em vez de 504 quando o servidor upstream está ok, ele simplesmente não consegue responder ao servidor devido ao tempo limite expirado?
Os logs de erros do Apache informam corretamente:
[proxy_http:error] [pid 6040] (70007)The timeout specified has expired: [client 192.168.56.1:53331] AH01102: error reading status line from remote server 127.0.0.1:8080"
O servidor backend upstream lança BrokenPipeError que eu capturo em uma exceção e não o deixo travar, então, pelo que sei, não deve ser culpa do servidor, mas sim do comportamento esperado porque a conexão é fechada após 1 segundo e não há para onde enviá-la .
Talvez alguém possa me ajudar a entender o que poderia ser a causa desse comportamento e por quêProxyTimeoutnão faz o Apache retornar 504 o que é lógico de acordo com a documentação?
Desde já, obrigado!