Développement de la réponse de @cadmi pour un cas spécifique de configuration de contrôleur Kubernetes ingress-nginx.
Dans mon cas, je n'ai pu ajouter que la petite partie de la configuration de Nginx à l'intérieur du fichier location
directive.
Je voulais ajouter un message JSON d'erreur 404 personnalisé pour un élément spécifique if
directive. Puisque default_type
n'est pas autorisé à l'intérieur de la if
que j'ai trouvé en ajoutant le "blank". default_type
en dehors de la if
et add_header
à l'intérieur de la if
directive :
http {
default_type text/html; # can't change this
...
server {
...
location / {
...
# This part of configuration is something I can change (generated by ingress-nginx controller `ingress.kubernetes.io/configuration-snippet` annotation)
default_type "";
# Custom 404 JSON page returned for the call to my.specific.host
if ($host = my.specific.host) {
return 404 '{\n "status": "404",\n "message": "Not Found",\n "details": "Please call other hosts."\n}\n';
add_header Content-Type "application/json" always;
}
}
}
}
Sans le default_type "";
un add_header
était d'ajouter la deuxième Content-Type
au lieu de modifier l'en-tête par défaut.