Vraag Reageer met 200 vanuit Nginx config zonder een bestand te serveren


Ik heb Apache geconfigureerd om een ​​200-antwoord terug te sturen zonder een bestand met deze configuratieregel te serveren

Redirect 200 /hello

Kan ik dit met Nginx doen? Ik wil geen bestand serveren, ik wil alleen dat de server reageert met een 200 (ik registreer alleen het verzoek).

Ik weet dat ik een indexbestand kan toevoegen en hetzelfde kan bereiken, maar als ik het in de config doe, is er één ding dat fout kan gaan.


91
2017-11-01 14:54


oorsprong




antwoorden:


Ja, dat kan

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



hoe voeg ik een nieuwe regel toe aan het antwoord? gangnam\nstyle? - tback
@tback natuurlijk, toch - cadmi
Voeg gewoon de nieuwe regel toe! Nginx-configuratierichtlijnen zijn niet gebonden aan afzonderlijke regels, maar worden beëindigd door puntkomma's. - Emil Vikström
add_header werkt niet voor mij omdat het een nieuwe header toevoegt in plaats van het oude 'Content-type' te vervangen. In mijn antwoord heb ik 2 'Content-type' headers: $ curl -v localhost / healthcheck / h1_pio> GET / healthcheck / h1_pio HTTP / 1.1> User-Agent: curl / 7.38.0> Host: localhost> Accepteren: / > <HTTP / 1.1 200 OK <Datum: di, 11 okt 2016 13:27:53 GMT <Inhoudstype: toepassing / octet-stream <Inhoud-lengte: 25 <Verbinding: in de hand houden <Inhoudstype: toepassing / json - jmcollin92
@ jmcollin92 dat kan gebeuren als je een bestaand default_type ergens anders hebt verklaard. U kunt het overschrijven door te gebruiken default_type text/plain; binnenkant van het locatieblok in plaats van de add_header richtlijn. - tjb1982


U moet een 204 gebruiken omdat Nginx geen 200 zonder antwoordtekst toestaat. Om een ​​204 te verzenden, gebruikt u eenvoudigweg de terugkeer richtlijn naar return 204; op de juiste locatie.


18
2017-11-02 11:52





Volgens de statuscodedefinities, denk ik dat je wilt dat het een 204 is, en niet 200. 200 moet een bron hebben in de reactie, anders zou ik denken dat de meeste gezonde browsers hierdoor in de war zouden raken. De andere die u kunt gebruiken is 304, wat inhoud in de cache is.

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


2
2017-11-01 15:39



Natuurlijk, maak er een 204 van, hoe doe ik het? Hoewel ik zeer twijfel dat elke browser in de war raakt door een leeg lichaam. - Theo
een leeg lichaam is nog steeds een antwoord, met een object, zoals een lege index.html. Wat u vroeg, is om een ​​antwoord van 200 te geven zonder bron (geen bestand). Wat betreft hoe ik het precies op nginx moet doen, moet ik het zelf opzoeken, ik heb dit slechts één keer gedaan op apache en ik kan het niet uit de hand herinneren. - sandroid
304 lijkt erop dat het alle verkeerde signalen zou sturen voor zaken als debugging en tijdelijke returns. - Kzqai