521 não é um código de resposta HTTP válido, e o Apache estaria violando a especificação HTTP retornando-a.
Dê uma olhada no log de erros do Apache - ele pode estar realmente sufocando no código de resposta que está recebendo do backend e emitindo um erro para o cliente, não mapeando o código 5xx para 500 .
Eu sugiro strongmente contra o uso indevido de códigos de resposta HTTP como este, mas o HAProxy ou o Varnish têm a capacidade de atuar como um "tubo burro", que pode atender às suas necessidades.