269 votes

Comment répondre avec 200 à partir de Nginx, sans servir un fichier ?

J'ai configuré Apache pour qu'il renvoie une réponse 200 sans servir de fichier avec cette ligne de configuration

Redirect 200 /hello

Puis-je faire cela avec Nginx ? Je ne veux pas servir un fichier, je veux juste que le serveur réponde avec un 200 (je ne fais qu'enregistrer la demande).

Je sais que je peux ajouter un fichier d'index et obtenir la même chose, mais le faire dans la configuration signifie qu'il y a une chose de moins qui peut mal tourner.

3voto

AndrewF Points 771

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X