nginx kirim kosong 200 tanggapan

19

Saya mengonfigurasi server failover yang ditugaskan untuk menerima permintaan masuk, dan membalas dengan 200 tanggapan kosong. Idenya adalah untuk meminimalkan waktu balasan dan untuk memastikan kami tidak mengirim 40x atau 50x.

Saya mencoba menggunakan return 200;untuk lokasi yang diinginkan dalam Nginx, tetapi sistem pemantauan saya (Pingdom) tidak menyukai responsnya, dan menganggap server tidak merespons.

Apakah ada cara yang lebih baik untuk melakukan ini, tentu saja dengan overhead minimal di server?

Gupta Keras
sumber

Jawaban:

23

Kode status HTTP 204 No Contentdimaksudkan untuk mengatakan "Saya telah menyelesaikan permintaan, tetapi tidak ada badan untuk kembali":

10.2.5 204 Tidak Ada Konten

Server telah memenuhi permintaan tetapi tidak perlu mengembalikan entitas-badan, dan mungkin ingin mengembalikan metainformation yang diperbarui. Respons MUNGKIN mencakup metainformation baru atau yang diperbarui dalam bentuk entitas-header, yang jika hadir HARUS dikaitkan dengan varian yang diminta.

Jika klien adalah agen pengguna, itu TIDAK HARUS mengubah tampilan dokumen dari apa yang menyebabkan permintaan untuk dikirim. Tanggapan ini terutama dimaksudkan untuk memungkinkan input untuk tindakan terjadi tanpa menyebabkan perubahan pada tampilan dokumen aktif agen pengguna, meskipun setiap metainformasi baru atau yang diperbarui HARUS diterapkan pada dokumen yang saat ini dalam tampilan aktif agen pengguna.

Respons 204 HARUS TIDAK menyertakan badan pesan, dan karenanya selalu diakhiri oleh baris kosong pertama setelah bidang header.

Alexander Azarov
sumber
Halo Alex, Terima kasih atas catatannya. Hanya ingin tahu apakah 204 kode respons dikenali oleh semua peramban utama dewasa ini. yaitu jika server saya mulai mengirim sekitar 204, apakah ada kemungkinan bahwa beberapa pengunjung (di browser, ponsel, terminal) mendapatkan kesalahan?
Sparsh Gupta
1
@SparshGupta Saya bukan pakar kompatibilitas browser, maaf. Saya telah melakukan pemeriksaan cepat di beberapa browser (FF 7 dan Safari di bawah Mac OSX) - mereka tidak melakukan apa-apa. Misalnya, jika Anda memiliki halaman yang sudah terbuka, maka Anda memasukkan URL yang mengembalikan 204 ke bilah alamat dan tekan Enter, kedua browser masih menunjukkan halaman sebelumnya.
Alexander Azarov
29

Anda dapat meminta nginx mengembalikan HTTP 200 kosong dengan blok konfigurasi seperti:

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

Anda dapat menghapus tanda komentar pada access_logbaris tersebut jika Anda tidak ingin semua pemeriksaan kesehatan tersebut dicatat.

Cody Caughlan
sumber
6
Perlu dicatat bahwa tanda '=' setelah lokasi penting. Tanpa itu, file itu harus ada, jika tidak nginx tidak akan mengembalikan 200. Dengan itu, Anda hanya dapat membuat lokasi yang Anda inginkan dan tidak khawatir tentang file dan nginx akan dengan senang hati mengembalikan 200.
Florin Andrei
Bagaimana menggabungkannya dengan auth dasar, sehingga permintaan terotentikasi mengembalikan 200, dan 401 tidak diauthentikasi?
Kiril