Configurare haproxy per restituire un 204 per una determinata corrispondenza ACL


8

Voglio restituire un codice di errore HTTP 204 se qualcuno tenta di accedere a un determinato percorso sul mio server Web. Potrei impostare uno dei miei server web per restituire un errore 204 e indicarlo come un backend. Tuttavia, dal momento che non vengono inviate informazioni, ho pensato che ciò potesse essere possibile a partire dallo stesso haproxy. Non c'è bisogno di disturbare i miei server web attuali.

Ho provato a creare un backend che avrebbe generato l'errore 204 come segue:

frontend ...
    ...
    acl is_always204 path_beg /thisone
    use_backend always204 if is_always204
    ...

backend always204
    errorfile 404 /etc/haproxy-shared/errors/204.http

Il file 204.http contiene:

HTTP/1.0 204 No Content Cache-Control: no-cache Connection: close Content-Type: image/png

Quando avvio haproxy, ottengo questo errore:

parsing [/etc/haproxy/haproxy:51] : status code 404 not handled, error customization will be ignored.

Penso che potrei fare questo nel modo sbagliato. Qualcuno può suggerire un modo per forzare haproxy a restituire un 204 per una data partita acl?


2
Hai provato a fare questo 503errorfile? Non ci sono server back-end reali, quindi HAproxy dovrebbe servire la 503risposta.
Felix Frank,

Pensi che un 204 sia il codice di stato corretto per questa situazione? Secondo la documentazione HAProxy , 204 e 404 non sono supportati codici di ritorno. Sembra che questo potrebbe voler restituire un 403 . 204 suggerisce che la richiesta è stata recapitata al server.
Anthony Fammartino,

1
Interessante. Content-Typenon ha senso in questo contesto, ma in realtà non ci sono abbastanza informazioni qui per capire quale sia il contesto. Ovviamente HTTP 204 viene comunque utilizzato raramente. La mia impressione circa 204 è che il server di origine dovrebbe probabilmente inviarlo, se esiste uno scenario in cui l'utilizzo ha senso.
Michael Hampton,

Risposte:


2

Come menzionato nei commenti, non è possibile specificare un errorfile per 404, poiché HAProxy non genererà mai un 404. È necessario utilizzare qualcosa come 503, che HAProxy effettivamente emette e ha un file di errore configurabile. Il tuo file 204 può essere usato così com'è, basta sostituire 503 con 204 nella tua configurazione.

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.