Problem
Eine Webanwendung beötigt bestimmt Header aus dem IIS (URL-Rewrite) Revese-Proxy. Oft gesehene Kandidaten sind beispielsweise:
- HTTP_X_FORWARDED_HOST
- HTTP_X_FORWARDED_PROTO
- HTTP_X_FORWARDED_FOR
Konfiguriert man das nur innerhalb der URL-Rewrite-Regel, ist die Site sofort mit einem Serverfehler 500 nicht mehr erreichbar. Kann der IIS etwa keine Header hinzufügen oder ersetzen?
Lösung
Die Servervariablen, oder auch HTTP-Header, müssen vorher im IIS, beispielsweise auf Serverebene oder Siteebene, definiert werden. Nicht-Definierte Servervariablen können durch Regeln im nachhinein nicht ge- oder ersetzt werden. Das ist aus Sicherheitsgründen ja auch sinnvoll, nur vielleicht etwas irritierend umgesetzt.
1. Servervariablen definieren
Beispiel: Links die höchste Ebene (<SERNAME>) auswählen und im rechten Fenster doppelt auf „URL Rewrite“ klicken. Das ist natürlich auch auf Site-Ebene möglich, wir definieren dieses Beispiel aber im Server, damit die Variablen für alle Sites des Server gelten können. Danach gibt es rechts in der „Action Pane“ einen Link „Servervariablen anzeigen …“
… und schlussendlich kann man dort über „Hinzufügen“ die Variablen die man nutzen oder ändern möchte hinzufügen. Der Titel der pane „Zulässige Servervariablen“ weist auch deutlich in die richtige Richtung. Was hier nicht definiert ist, ist Serverseitig nicht zulässig. Serverseitig, weil eine Anwendung selbst natürlich Header senden und setzen kann, wie sie das möchte.
2. Servervariablen setzen oder ersetzen
Danach kann man in jeder Rewrite-Regel besagte Variablen (=Header) setzen oder ersetzen, ohne das der Server über einen „Error 500“ stolpert.
Pingback: Shcritt für Schritt: Windows Server 2019 (IIS 10) als Reverse Proxy mit SSL-Offloading – ugg.li