Reverse-Proxy, um Header-Wert als Parameter in die URL einzufügen

Reverse-Proxy, um Header-Wert als Parameter in die URL einzufügen

Ich muss einen Reverse-Proxy einrichten, der den Header-Wert der ursprünglichen Anfrage als Parameter in die Ziel-URL einfügt. Der Grund dafür ist rein anwendungsspezifisch und leider kann ich diese Anwendung nicht ändern. Ich brauche beispielsweise Folgendeshttps://a.commit dem HTTP-Header myparam=abcd muss ich per Proxy weitergeleitet werden zuhttp://b.com/?val=abcd

Ist es möglich, IIS oder Apache für die Ausführung einer solchen Aufgabe zu konfigurieren? Wenn ja, können Sie erklären, wie?

Antwort1

Getestet in Apache 2.4:

# (In a VirtualHost for a.com)
RewriteEngine on
RewriteRule ^(.*)$ http://b.com$1?val=%{HTTP:myparam} [QSA,P]

Beispiel für Umschreibungen (wenn der Header myparamden Wert hat myvalue):

  • a.comwirdhttp://b.com?val=myvalue
  • a.com/path/herewirdhttp://b.com/path/here?val=myvalue
  • a.com/path?a=b&c=dwirdhttp://b.com/path?a=b&c=d&val=myvalue

Wenn der myparamHeader nicht vorhanden ist, a.com/xwird zu umgeleitet http://b.com/x?val=. Wenn Sie zu umleiten möchten http://b.com/x, können Sie die folgende längere Version des obigen Beispiels verwenden:

RewriteEngine on
RewriteCond %{HTTP:myparam} .
RewriteRule ^(.*)$ http://example.com$1?val=%{HTTP:myparam} [QSA,L,P]
RewriteRule ^(.*)$ http://example.com$1 [P]

Verwandte Links:

Antwort2

Für IIS können Sie denURL-Rewrite-Erweiterung:

Mit IIS URL Rewrite 2.0 können Webadministratoren leistungsstarke Regeln erstellen, um URLs zu implementieren, die für Benutzer leichter zu merken und für Suchmaschinen leichter zu finden sind. Mithilfe von Regelvorlagen, Rewrite-Maps, .NET-Anbietern und anderen in IIS Manager integrierten Funktionen können Webadministratoren problemlos Regeln einrichten, um das URL-Rewrite-Verhalten basierend auf HTTP-Headern, HTTP-Antwort- oder Anforderungsheadern, IIS-Servervariablen und sogar komplexen Programmregeln zu definieren. Darüber hinaus können Webadministratoren Umleitungen durchführen, benutzerdefinierte Antworten senden oder HTTP-Anforderungen basierend auf der in den Rewrite-Regeln ausgedrückten Logik stoppen.

Funktioniert mit: IIS 7, IIS 7.5, IIS 8

Eine exemplarische Vorgehensweise finden Sie unter: Erstellen von Rewrite-Regeln für das URL-Rewrite-Modul.

verwandte Informationen