it-swarm.com.de

Antworten Sie mit 200 aus der Nginx-Konfiguration, ohne eine Datei bereitzustellen

Ich habe Apache so konfiguriert, dass eine 200-Antwort zurückgesendet wird, ohne dass eine Datei mit dieser Konfigurationszeile bereitgestellt wird

Redirect 200 /hello

Kann ich das mit Nginx machen? Ich möchte keine Datei bereitstellen, ich möchte nur, dass der Server mit 200 antwortet (ich protokolliere nur die Anfrage).

Ich weiß, dass ich eine Indexdatei hinzufügen und das Gleiche erreichen kann, aber wenn ich es in der Konfiguration mache, kann eines weniger schief gehen.

142
Theo

Ja, du kannst

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

Sie müssen eine 204 verwenden, da Nginx keine 200 ohne Antwortkörper zulässt. Um einen 204 zu senden, verwenden Sie einfach die return-Direktive to return 204; an der entsprechenden Stelle.

21

Gemäß den Statuscode-Definitionen möchten Sie, dass es sich um eine 204 handelt und nicht um 200. 200 müssen eine Ressource in der Antwort enthalten, oder ich würde vermuten, dass die meisten vernünftigen Browser dadurch verwirrt werden. Die andere, die Sie verwenden können, ist 304 für zwischengespeicherte Inhalte.

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

4
sandroid

Um die Antwort von @Martin Fjordval zu vervollständigen, seien Sie vorsichtig, wenn Sie eine solche Konfiguration verwenden, um einen Healthcheck durchzuführen.

Während ein 204 HTTP-Code ist semantisch perfekt für einen Healthcheck (Erfolgsanzeige ohne Inhalt), einige Dienste betrachten ihn nicht als Erfolg.

Ich hatte nämlich das Problem mit Google Cloud Load-Balancers .

2
toadjaune