Konfigurieren Sie haproxy so, dass für eine bestimmte ACL-Übereinstimmung ein 204 zurückgegeben wird

8

Ich möchte einen HTTP 204-Fehlercode zurückgeben, wenn jemand versucht, auf einen bestimmten Pfad auf meinem Webserver zuzugreifen. Ich könnte einen meiner Webserver so einstellen, dass er einen 204-Fehler zurückgibt und Haproxy als Backend darauf verweist. Da jedoch keine Informationen gesendet werden, dachte ich, dass dies über Haproxy selbst möglich sein sollte. Keine Notwendigkeit, meine tatsächlichen Webserver zu stören.

Ich habe versucht, ein Backend zu erstellen, das den 204-Fehler wie folgt generiert:

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

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

Die Datei 204.http enthält:

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

Wenn ich Haproxy starte, wird folgende Fehlermeldung angezeigt:

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

Ich denke, ich gehe das vielleicht falsch an. Kann jemand einen Weg vorschlagen, um Haproxy zu zwingen, einen 204 für ein bestimmtes ACL-Match zurückzugeben?

TomOnTime
quelle
2
Haben Sie versucht, dies zur 503Fehlerdatei zu machen? Es gibt keine tatsächlichen Backend-Server, daher sollte HAproxy die 503Antwort bereitstellen .
Felix Frank
Denken Sie, dass ein 204 der richtige Statuscode für diese Situation ist? Gemäß der HAProxy- Dokumentation werden 204 und 404 keine Rückkehrcodes unterstützt. Es scheint, als würde dies einen 403 zurückgeben wollen . 204 schlägt vor, dass die Anforderung an den Server übermittelt wurde.
Anthony Fammartino
1
Interessant. Content-Typemacht in diesem Zusammenhang keinen Sinn, aber es gibt hier wirklich nicht genug Informationen, um herauszufinden, was der Kontext ist. Natürlich wird HTTP 204 sowieso selten verwendet. Mein Gefühl bei 204 ist, dass der Ursprungsserver es wahrscheinlich senden sollte, wenn es ein Szenario gibt, in dem die Verwendung überhaupt Sinn macht.
Michael Hampton

Antworten:

2

Wie in den Kommentaren erwähnt, können Sie keine Fehlerdatei für 404 angeben, da HAProxy niemals eine 404 generiert. Sie müssen so etwas wie 503 verwenden, das HAProxy tatsächlich ausgibt und über eine konfigurierbare Fehlerdatei verfügt. Ihre 204-Datei kann unverändert verwendet werden. Ersetzen Sie 204 in Ihrer Konfiguration einfach durch 503.

dglloyd
quelle