Eu descobri como posso conseguir isso. Tudo o que eu precisava no meu caso era um manipulador de erros:
location @legacy {
proxy_pass http://upstream;
proxy_set_header Host legacy.host;
proxy_redirect off;
}
error_page 404 =200 @legacy;
Assim, no caso de o servidor upstream principal retornar o código de erro 404
, a solicitação é intermediada por proxy para o host legado.