Saya ingin mengembalikan kode kesalahan HTTP 204 jika ada yang mencoba mengakses jalur tertentu di server web saya. Saya bisa mengatur salah satu server web saya untuk mengembalikan kesalahan 204 dan menunjuk haproxy sebagai backend. Namun karena tidak ada informasi yang dikirim, saya pikir ini harus dilakukan dari haproxy itu sendiri. Tidak perlu repot dengan server web saya yang sebenarnya.
Saya mencoba membuat backend yang akan menghasilkan kesalahan 204 sebagai berikut:
frontend ...
...
acl is_always204 path_beg /thisone
use_backend always204 if is_always204
...
backend always204
errorfile 404 /etc/haproxy-shared/errors/204.http
File 204.http berisi:
HTTP/1.0 204 No Content
Cache-Control: no-cache
Connection: close
Content-Type: image/png
Ketika saya memulai haproxy, saya mendapatkan kesalahan ini:
parsing [/etc/haproxy/haproxy:51] : status code 404 not handled, error customization will be ignored.
Saya pikir saya mungkin salah tentang hal ini. Adakah yang bisa menyarankan cara untuk memaksa haproxy untuk mengembalikan 204 untuk pertandingan acl yang diberikan?
503
kesalahan? Tidak ada server backend yang sebenarnya, jadi HAproxy harus melayani503
respons.Content-Type
tidak masuk akal dalam konteks ini, tetapi sebenarnya tidak ada cukup informasi di sini untuk mencari tahu apa konteksnya. Tentu saja HTTP 204 jarang digunakan. Perasaan saya tentang 204 adalah bahwa server asal mungkin harus mengirimnya, jika ada skenario di mana menggunakannya masuk akal sama sekali.Jawaban:
Seperti disebutkan dalam komentar, Anda tidak dapat menentukan file kesalahan untuk 404, karena HAProxy tidak akan pernah menghasilkan 404. Anda harus menggunakan sesuatu seperti 503, yang benar-benar dipancarkan oleh HAProxy dan memiliki file kesalahan yang dapat dikonfigurasi. File 204 Anda dapat digunakan apa adanya, ganti saja 503 dengan 204 di konfigurasi Anda.
sumber