Question Réponse avec 200 de Nginx config sans servir un fichier


J'ai configuré Apache pour renvoyer une réponse 200 sans servir aucun 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 que consigner 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.


91
2017-11-01 14:54


origine




Réponses:


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

197
2018-03-27 14:05



Comment puis-je ajouter une nouvelle ligne à la réponse? gangnam\nstyle? - tback
@tback bien sur, tu as raison - cadmi
Ajoutez simplement la nouvelle ligne! Les directives de configuration Nginx ne sont pas liées à une seule ligne, elles sont terminées par un point-virgule. - Emil Vikström
add_header ne fonctionne pas pour moi car il ajoute un autre en-tête au lieu de remplacer l'ancien "Content-type". Dans ma réponse, j'ai 2 en-têtes 'Type de contenu': $ curl -v localhost / healthcheck / h1_pio> GET / healthcheck / h1_pio HTTP / 1.1> Agent-utilisateur: curl / 7.38.0> Hôte: localhost> Accepter: / > <HTTP / 1.1 200 OK <Date: mardi, 11 octobre 2016 13:27:53 GMT <Type de contenu: application / octet-stream <Longueur de contenu: 25 <Connexion: keep-alive <Type de contenu: application / JSON - jmcollin92
@ jmcollin92 cela peut arriver si vous avez un type par défaut existant déclaré ailleurs. Vous pouvez le remplacer en utilisant default_type text/plain; à l'intérieur du bloc d'emplacement à la place du add_header directif. - tjb1982


Vous devez utiliser un 204 car Nginx n'autorisera pas un 200 sans corps de réponse. Pour envoyer un 204 vous utilisez simplement le directive de retour à return 204; à l'endroit approprié.


18
2017-11-02 11:52





En ce qui concerne les définitions de code d'état, je pense que vous voulez qu'il s'agisse d'un 204, et non de 200. 200 doivent être associés à une ressource dans la réponse, sinon je crains que la plupart des navigateurs sensés ne s'y perdent. L’autre que vous pouvez utiliser est 304, qui correspond au contenu mis en cache.

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


2
2017-11-01 15:39



Bien sûr, faites-en un 204, comment puis-je le faire? Bien que je doute fort que tout navigateur sera confondu par un corps vide. - Theo
un corps vide est toujours une réponse, avec un objet, tel qu'un index.html vide. Ce que vous avez demandé, c'est de fournir une réponse 200 sans aucune ressource associée (aucun fichier servi). Pour ce qui est de savoir comment faire exactement cela sur nginx, je dois le rechercher moi-même, je ne l'ai fait qu'une fois sur Apache, et je ne me souviens plus de rien. - sandroid
304 semble envoyer des signaux erronés pour des tâches telles que le débogage et les retours temporaires. - Kzqai