Konfigurasikan haproxy untuk mengembalikan 204 untuk pertandingan ACL tertentu

8

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?

TomOnTime
sumber
2
Sudahkah Anda mencoba menjadikan ini file 503kesalahan? Tidak ada server backend yang sebenarnya, jadi HAproxy harus melayani 503respons.
Felix Frank
Apakah Anda berpikir bahwa 204 adalah kode status yang benar untuk situasi ini? Menurut dokumentasi HAProxy , 204 dan 404 tidak didukung kode pengembalian. Sepertinya ini mungkin ingin mengembalikan 403 . 204 menunjukkan bahwa permintaan dikirim ke server.
Anthony Fammartino
1
Menarik. Content-Typetidak 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.
Michael Hampton

Jawaban:

2

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.

dglloyd
sumber