¿Cómo devuelvo un archivo predeterminado en Nginx para todos los 404 dentro de una ruta específica?

¿Cómo devuelvo un archivo predeterminado en Nginx para todos los 404 dentro de una ruta específica?

Tengo una carpeta de localización que tiene un montón de archivos de idioma (como JSON) y mi aplicación web intenta leer el idioma del navegador para buscar el archivo JSON correspondiente.

En ciertos escenarios, el archivo de idioma correspondiente no existe y nginx devuelve un 404 como debería. Sin embargo, me gustaría devolver una redirección temporal al archivo de idioma predeterminado.

Intenté esto, pero no parece funcionar. ¿Qué estoy haciendo mal?

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

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

EDITAR 2: Así que intenté modificarlo try_filesun poco así.

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

Pero ahora aparece un error 500. Los registros dicen *35 rewrite or internal redirection cycle while internally redirecting.

EDITAR 3: Mi configuración completa de nginx está aquí -https://gist.github.com/paambaati/9782e95b2e9af899b154

Respuesta1

Usarerror_page

Para utilizar un archivo determinado como respuesta 404, utilicepágina_error:

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

Tenga en cuenta el uso de =para servir /static/l10n/en-us.jsoncomo http 200.

información relacionada