Ausgabe
Wie kann ich Antwortheader innerhalb der Apache2-Konf umschreiben? Ist das überhaupt möglich? Wir verwenden Apache2 für Legacy-Dienste, die eine Verbindung zu einem Dienst hinter einem Envoy-Proxy herstellen.
Envoy setzt den Antwort- und Anforderungsheader immer auf Kleinbuchstaben. Ihre Lösung mit dem
Erhaltungsformat funktioniert nicht, weil sie den Quellheader nicht respektieren.
Ich erwarte einen Responseheader wie
“DockingStation_Eins: 44”
Gesandter tut
“dockingstation_one: 44”
mit ihrem Beibehaltungsformat bekomme ich
“Dockingstation_eins: 44”
Meine Idee war, den Header entweder mit mod_rewrite oder mod_headers in Apache2 neu zu schreiben, bevor er die Antwort an den Client sendet. Leider funktioniert nichts wie erwartet.
Meine neuste Einstellung:
<Location /my/service/v2>
RewriteEngine on
# 1. Save the current value in env var (Case of header name does not matter)
SetEnvIf dockingstation_one(.*) HEADER_VALUE=$1
# 2. Delete the current header (Case of header name does not matter)
Header unset "dockingstation_one" env=HEADER_VALUE
# 3. Recreate header with the required case (Case of header name is preserved)
# env=HEADER_VALUE ensures the header is only set if it was set to begin with
Header set "DockingStation_One" %{DOCKINGSTATION_ONE}e env=HEADER_VALUE
ProxyPass "http://service.go:8090/v2"
ProxyPassReverse "http://service.go:8090/v2"
</Location>
Lösung
Egal. Meine ganze Syntax war falsch. Mein Fix sieht so aus:
Header always set "DockingStation_One" "expr=%{resp:dockingstation_one}"
Beantwortet von – Igor Williams
Antwort geprüft von – Jay B. (FixError Admin)