nginx invia 200 risposte vuote


19

Sto configurando un server di failover incaricato di accettare qualsiasi richiesta in arrivo e rispondere con 200 risposte vuote. L'idea è di ridurre al minimo i tempi di risposta e assicurarsi di non inviare 40x o 50x.

Ho provato a utilizzare return 200;per le posizioni desiderate all'interno di Nginx, ma i miei sistemi di monitoraggio (Pingdom) non hanno gradito la risposta e ho ritenuto che il server non rispondesse.

Esiste un modo migliore per farlo, ovviamente con un sovraccarico minimo sul server?

Risposte:


23

Il codice di stato HTTP 204 No Contentintende dire "Ho completato la richiesta, ma non esiste un corpo da restituire":

10.2.5 204 Nessun contenuto

Il server ha soddisfatto la richiesta ma non è necessario restituire un corpo-entità e potrebbe voler restituire metainformazioni aggiornate. La risposta può includere metainformazioni nuove o aggiornate sotto forma di intestazioni di entità, che se presenti DOVREBBE essere associate alla variante richiesta.

Se il client è un agente utente, NON DOVREBBE cambiare la sua vista del documento da quella che ha causato l'invio della richiesta. Questa risposta ha principalmente lo scopo di consentire l'immissione di azioni senza provocare una modifica alla vista del documento attivo dell'agente utente, sebbene qualsiasi metainformazione nuova o aggiornata DOVREBBE essere applicata al documento attualmente nella vista attiva dell'agente utente.

La risposta 204 NON DEVE includere un corpo di messaggio e quindi viene sempre terminata dalla prima riga vuota dopo i campi di intestazione.


Ciao Alex Grazie per la nota. Mi chiedo solo se al giorno d'oggi il codice di risposta 204 sia riconosciuto da tutti i principali browser. cioè se il mio server inizia a inviare 204 in giro, c'è qualche probabilità che alcuni visitatori (attraverso browser, cellulari, terminali) ricevano un errore?
Sparsh Gupta,

1
@SparshGupta Non sono un esperto di compatibilità del browser, mi dispiace. Ho fatto un rapido controllo in un paio di browser (FF 7 e Safari su Mac OSX): non fanno esattamente nulla. Ad esempio, se hai già una pagina aperta, inserisci un URL che restituisce 204 nella barra degli indirizzi e premi Invio, entrambi i browser mostrano comunque quella pagina precedente.
Alexander Azarov,

29

Puoi avere nginx restituire un HTTP 200 vuoto da un blocco di configurazione come:

location = /health {
  return 200;
  #access_log off;
}

È possibile rimuovere il commento dalla access_logriga se non si desidera che vengano registrati tutti i controlli di integrità.


6
Va notato che il segno '=' dopo la posizione è importante. Senza di esso, quel file deve esistere, altrimenti nginx non restituirà 200. Con esso, puoi semplicemente recuperare qualsiasi posizione desideri e non preoccuparti dei file e nginx restituirà felicemente 200.
Florin Andrei,

Come combinare quello con l'autent di base, tale che la richiesta autenticata restituisce 200 e 401 non autenticata?
Kiril,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.