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.

502voto

cadmi Points 6598

Oui, vous pouvez

location / {
    return 200 'gangnam style!';
    # because default content-type is application/octet-stream,
    # browser will offer to "save the file"...
    # if you want to see reply in browser, uncomment next line 
    # add_header Content-Type text/plain;
}

55voto

jordancpaul Points 2190

Si vous voulez renvoyer un texte HTML formaté sans servir de fichier HTML :

location / {
    default_type text/html;
    return 200 "<!DOCTYPE html><h2>gangnam style!</h2>\n";
}

Si vous voulez renvoyer un texte sans format html comme les points de réponse :

location / {
    add_header Content-Type text/plain;
    return 200 'gangnam style!';
}

Et si vous voulez simplement rendre 200 :

location / {
    return 200;
}

Juste pour se souvenir : location les blocs vont à l'intérieur server blocs. Voici un doc pour plus d'informations sur ce sujet.

P.S. : J'ai une configuration similaire (html formaté) qui fonctionne sur de nombreux serveurs.

33voto

Schotime Points 6067

Vous devez utiliser un 204 car Nginx n'autorisera pas un 200 sans corps de réponse. Pour envoyer un 204, il suffit d'utiliser la commande directive de retour a return 204; à l'endroit approprié.

9voto

toadjaune Points 361

Pour compléter la réponse de @Martin Fjordval, faites attention si vous utilisez une telle configuration pour faire un bilan de santé.

Alors qu'un 204 Le code HTTP est sémantiquement parfait pour un bilan de santé (indication de réussite sans contenu), certains services font no le considérer comme un succès.

A savoir, j'ai eu le problème avec Équilibreurs de charge Google Cloud .

6voto

ashutosh Points 1272

Selon les définitions des codes d'état, je crois que vous voulez que ce soit un 204, et non un 200. Les 200 doivent être accompagnés d'une ressource dans la réponse, sinon je pense que la plupart des navigateurs sains d'esprit s'y perdront. L'autre code que vous pouvez utiliser est le 304, qui correspond à un contenu en cache.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

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