Serve 404 von HAProxy, wenn keine Acls übereinstimmen

15

Ich konfiguriere gerade HAProxy mit 1.5dev-17 neu. Ich würde gerne einen 404-Fehler zurückgeben, wenn für eine bestimmte Anfrage kein Backend zur Verfügung steht.

Unsere aktuelle Konfiguration verwendet das default_backend, um zu unseren Django-App-Servern zu routen. Wenn jedoch eine ganze Reihe von Testanforderungen (wie ein Pen-Test) mit keinem der anderen konfigurierten Backends übereinstimmen, werden unsere Django-Server beim Versuch angehalten um diese ungültigen Anforderungen zu bedienen und schließlich eine 404 zurückzugeben.

Ich möchte den 404 von HAProxy bedienen, anstatt ihn an die Django-Backends zu delegieren. Ich erreiche dies derzeit mit einem Hack:

frontend www
    ...
    default_backend nomatch

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

Und innerhalb der 404.http-Datei setze ich den 404-Statuscode in den Headern. Das funktioniert, fühlt sich aber sehr falsch an. Gibt es einen besseren Weg, dies mit HAProxy zu erreichen? Oder sollte ich ein reguläres Backend verwenden und dieses mit einem 404 beantworten lassen?

Josh Smeaton
quelle
Was ist der Inhalt der 404.http-Datei?
Jason Floyd
3
@JasonFloyd HTTP/1.0 404 Not Foundgefolgt von einigen anderen Überschriften , dann eine leere Zeile, dann der <html>Inhalt.
Josh Smeaton

Antworten:

2

Nachdem ich etwas Ähnliches wollte, habe ich mir das auch ausgedacht. Es fühlte sich falsch an, aber es funktioniert in der Praxis sehr gut und ist viel sauberer als der Versuch, bestimmte URLs auf die schwarze Liste zu setzen. Hinterlassen Sie einfach einen Kommentar, damit niemand darauf stößt und denkt, dass er falsch ist.

Philip Cristiano
quelle