Bom conselho de Alexey!
Aqui está minha nova configuração:
upstream itemFromNodeJs {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name api.domain.com 127.0.0.1;
location ~*\/item\/([0-9]+)$ {
proxy_pass http://itemFromNodeJs;
error_page 502 = /item/db/$1;
}
...
}
Então, o que acontece agora?
Se o servidor nodejs estiver ativo, o proxy_pass funcionará e nós não iremos mais longe.
Se o servidor nodejs estiver inativo, a error_page interceptará o erro 502 e acessará o URL de fallback, incluindo o parâmetro url ($ 1). O = altera o código de status de 502 para o retornado pelo URL de fallback.
Isso é exatamente o que eu queria.
Pode-se dizer que isso é uma "maneira barata e barata" de brincar com a semântica: uma página de erro é uma página de erro e não uma alternativa. Eu concordo, mas esta também é uma lógica respeitável: meu servidor proxy (nodejs) está inoperante, dando assim um erro ...
Se alguém tiver outra solução, ainda estou interessado!