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?
503
Fehlerdatei zu machen? Es gibt keine tatsächlichen Backend-Server, daher sollte HAproxy die503
Antwort bereitstellen .Content-Type
macht 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.Antworten:
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.
quelle