Servi 404 da HAProxy quando nessun acls corrisponde


15

Attualmente sto riconfigurando HAProxy usando 1.5dev-17. Quello che mi piacerebbe fare è restituire un errore 404 quando non esiste un backend da utilizzare per una particolare richiesta.

La nostra configurazione attuale utilizza default_backend per instradare ai nostri server di app di django, ma quando ci sono molte richieste di sondaggio (come un pen-test) che non corrispondono a nessuno degli altri backend configurati, i nostri server di django si fermano mentre provano per soddisfare queste richieste non valide, restituendo infine un 404.

Vorrei servire il 404 da HAProxy piuttosto che delegare ai back-end Django. Attualmente sto realizzando questo con un trucco:

frontend www
    ...
    default_backend nomatch

backend nomatch
    errorfile 503 /var/www/http/404.http

E all'interno del file 404.http ho impostato il codice di stato 404 nelle intestazioni. Funziona, ma sembra molto sbagliato. Esiste un modo migliore per raggiungere questo obiettivo con HAProxy? O dovrei usare un backend regolare e lasciare che quella maniglia risponda con un 404?


Qual è il contenuto del file 404.http?
Jason Floyd,

3
@JasonFloyd HTTP/1.0 404 Not Foundseguito da alcune altre intestazioni, quindi una riga vuota, quindi il <html>contenuto.
Josh Smeaton,

Risposte:



2

Dopo aver desiderato qualcosa di simile, questa è la stessa cosa che mi è venuta in mente. Sembrava sbagliato, ma funziona molto bene nella pratica ed è molto più pulito rispetto al tentativo di inserire nella lista nera particolari URL. Assicurati di lasciare un commento in modo che nessuno lo incontri pensando che sia errato.

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.