web-dev-qa-db-fra.com

Répondre avec 200 de la configuration Nginx sans servir de fichier

J'ai configuré Apache pour renvoyer 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 (j'enregistre juste la demande).

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

142
Theo

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;
}
299
cadmi

Vous devez utiliser un 204 car Nginx ne permettra pas un 200 sans corps de réponse. Pour envoyer un 204 vous utilisez simplement la directive return to return 204; à l'emplacement approprié.

21
Martin Fjordvald

Selon les définitions de code d'état, je pense que vous voulez que ce soit un 204, et non 200. Le besoin de 200 doit être avec une ressource dans la réponse, ou je soupçonne que la plupart des navigateurs sains seraient confus. L'autre que vous pouvez utiliser est 304, qui est pour le contenu mis en cache.

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

4
sandroid

Pour compléter la réponse de @Martin Fjordval, soyez prudent si vous utilisez une telle configuration pour effectuer un bilan de santé.

Alors qu'un 204 Le code HTTP est sémantiquement parfait pour un contrôle de santé (indication de succès sans contenu), certains services ne le considèrent pas comme un succès.

À savoir, j'ai eu le problème avec Google Cloud Load-balancers .

2
toadjaune