Como faço para retornar um arquivo padrão no Nginx para todos os 404s dentro de um caminho específico?

Como faço para retornar um arquivo padrão no Nginx para todos os 404s dentro de um caminho específico?

Eu tenho uma pasta de localização que contém vários arquivos de idioma (como JSON) e meu webapp tenta ler o idioma do navegador para buscar o arquivo JSON correspondente.

Em certos cenários, o arquivo de idioma correspondente não existe e o nginx retorna 404 como deveria. No entanto, gostaria de retornar um redirecionamento temporário para o arquivo de idioma padrão.

Eu tentei isso, mas não parece funcionar. O que estou fazendo de errado?

    location /static/l10n {
            try_files $uri @missing_language;
    }

    location @missing_language {
            rewrite ^ /static/l10n/en-us.json break;
    }

EDITAR 2: Então tentei ajustar try_filesum pouco assim.

    location /static/l10n {
            try_files $uri /static/l10n/en-us.json;
    }

Mas agora recebo um erro 500. Os registros dizem *35 rewrite or internal redirection cycle while internally redirecting.

EDITAR 3: Minha configuração completa do nginx está aqui -https://gist.github.com/paambaati/9782e95b2e9af899b154

Responder1

Usarerror_page

Para usar um determinado arquivo como resposta 404 - usepágina_erro:

location /static/l10n {
    error_page 404 = /static/l10n/en-us.json;
}

Observe o uso de =para servir /static/l10n/en-us.jsoncomo http 200.

informação relacionada